iAd 在模拟器上工作但在设备上崩溃(ipad)

Posted

技术标签:

【中文标题】iAd 在模拟器上工作但在设备上崩溃(ipad)【英文标题】:iAd works on simulator but crash on device(ipad) 【发布时间】:2014-04-19 11:34:48 【问题描述】:

我正在尝试将 iAd 集成到我的应用中,这就是我所做的

    通过 Xcode 5.1 创建单视图应用(设备类型 universal)。 将 iAd.framework 添加到我的项目中。 在 ViewController.h 中导入 <iAd/iAd.h> 在 viewDidLoad 方法中添加self.canDisplayBannerAds = YES;。 在 iPhone 和 iPad 模拟器上编译并运行应用程序

该应用在两个模拟器上都运行良好,我可以在我的应用底部看到横幅。

但是当我在我的 iPad(运行 ios 6.1)上测试它时,应用程序崩溃了,这就是我得到的。

2014-04-19 19:25:56.409 TestiAd[12771:907] -[ViewController setCanDisplayBannerAds:]: unrecognized selector sent to instance 0x1fd7b620
2014-04-19 19:25:56.413 TestiAd[12771:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController setCanDisplayBannerAds:]: unrecognized selector sent to instance 0x1fd7b620'
*** First throw call stack:
(0x336442a3 0x3b4e497f 0x33647e07 0x33646531 0x3359df68 0xfb125 0x3546b595 0x354abd79 0x354a7aed 0x354e91e9 0x354ac83f 0x354a484b 0x3544cc39 0x3544c6cd 0x3544c11b 0x371555a3 0x371551d3 0x33619173 0x33619117 0x33617f99 0x3358aebd 0x3358ad49 0x354a3485 0x354a0301 0xfb3a5 0x3b91bb20)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

我有很多关于 SO 的类似问题,但其中很多都与在 iPad 上将 iPhone 应用程序作为可计算模式运行有关,但事实并非如此,我正在通用应用程序上进行测试。

【问题讨论】:

【参考方案1】:

问题出在 iOS 版本上。 来自Doc:canDisplayBannerAds在iOS7中引入,在iOS6上不存在.. 所以,你可能想做:

if ([self respondsToSelector:@selector(setCanDisplayBannerAds:)])
    self.canDisplayBannerAds = YES;

【讨论】:

谢谢,应该是if ([self respondsToSelector:@selector(setCanDisplayBannerAds:)]) 矿机和模拟器都是iOS 7及以上,但是if([self respondsToSelector:@selector(setCanDisplayBannerAds:)])返回false。 @bagusflyer: 自己是UIViewController吗?

以上是关于iAd 在模拟器上工作但在设备上崩溃(ipad)的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在 iPad 设备上崩溃但在模拟器上运行

iPad 应用程序在设备上崩溃

测试 iAd 在模拟器、iPhone 设备而不是 iPad 设备上显示

iAD 仅在某些设备上工作

iPad 纵向应用程序以横向模式加载 iAd

我的应用在 iPad 模拟器上运行良好,但在 iPad(iOS 8.4)上崩溃,xcode 说无法在捆绑中加载 NIB