0

这是代码:

Chartboost *cb = [Chartboost sharedChartboost];
cb.delegate = self;
cb.appId = CHARTBOOST_APPID;
cb.appSignature = CHARTBOOST_APPSIGNATURE;

[cb startSession];
[cb cacheInterstitial];

这在 iOS6 设备中运行良好,但在 iOS5 中崩溃。

崩溃日志:

NSInvalidArgumentException 原因:-[__NSCFDictionary setObject:forKeyedSubscript:]:无法识别的选择器发送到实例 0x1234sva8

我怎么解决这个问题?我已经将 AdSupport.framework 设为可选。

4

2 回答 2

1

崩溃修复!

我在这篇文章中遵循了解决方案:http ://forums.xamarin.com/discussion/3893/chartboost-ios-binding-works-on-ios-6-but-crashes-on-ios-5

只是我将 lib arclite.a 添加到我的项目并修复了崩溃。

于 2013-07-21T10:27:52.487 回答
1

我不知道 Chartboost,但错误消息表明代码使用了现代的“NSDictionary 和 NSArray 下标”功能,例如

dict[@"key"] // instead of [dict objectForKey:@"key"]

根据“Objective-C Feature Availability Index”,NSDictionary 和 NSArray 下标需要 iOS 6.0 或更高版本的 SDK 和 LLVM Compiler 4.0。它部署到 iOS 5 及更高版本。

因此,如果您不需要 iOS 4.3 兼容性,将部署目标设置为 iOS 5 并针对 iOS 6 SDK 进行编译应该可以解决问题。确保在构建设置中将“Apple LLVM 编译器”而不是“LLVM GCC”或类似设置为编译器。

于 2013-07-21T10:43:15.943 回答