这是代码:
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。
答案 0 :(得分:1)
崩溃固定!
我在这篇文章中关注了解决方案:http://forums.xamarin.com/discussion/3893/chartboost-ios-binding-works-on-ios-6-but-crashes-on-ios-5
我刚刚将lib arclite.a添加到我的项目中并修复了崩溃。
答案 1 :(得分:1)
我不知道Chartboost,但错误消息表明代码使用了 现代“NSDictionary和NSArray下标”功能,例如
dict[@"key"] // instead of [dict objectForKey:@"key"]
根据"Objective-C Feature Availability Index", NSDictionary和NSArray下标需要iOS 6.0或更高版本的SDK和LLVM编译器4.0。它部署到iOS 5及更高版本。
因此,如果您不需要iOS 4.3兼容性,请将部署目标设置为iOS 5 并针对iOS 6 SDK进行编译应该可以解决问题。确保“Apple LLVM编译器”而不是“LLVM GCC”或类似 在构建设置中设置为编译器。