我在尝试使用Chartboost中的方法时收到警告:
执行'didCacheInterstitial:'时的参数类型冲突:''CBLocation'与'NSString * __ strong'
采用以下方法:
- (void)didCacheInterstitial:(NSString *)location {
NSLog(@"interstitial cached at location %@", location);
}
和
指向整数转换的不兼容指针将'NSString *'发送到'CBLocation'类型的参数
执行以下操作时:
[cb cacheInterstitial:@"Main Menu"];
这里有什么问题?
答案 0 :(得分:2)
声明didCacheInterstitial:
的头文件说明了这一点:
- (void)didCacheInterstitial:(CBLocation)location;
与您的实施不符。方法的定义必须与声明匹配。
答案 1 :(得分:1)
此警告旨在鼓励开发人员使用头文件中CBLocation枚举中的预设位置。
但是,最新的Chartboost SDK向后兼容传递NSString参数的插页式调用。
例如,尽管发出警告,以下调用仍然可以正常工作:
[[Chartboost sharedChartboost] cacheInterstitial:@"foobar"];
SDK中的一些技巧会自动转换@" foobar"很长一段时间,所以你可以忽略警告。
关于日志记录,您可以考虑使用NSLog(@"%@", location);
来确保人类可读的位置输出而不是难以理解的数字。如上所述,尽管有警告,这仍然有效。
完全披露:我为Chartboost工作。