ios7:将iAd.framework添加到项目会导致SIGABRT运行

ios7:将iAd.framework添加到项目会导致SIGABRT运行,ios,frameworks,iad,sigabrt,ios7.1,Ios,Frameworks,Iad,Sigabrt,Ios7.1,我有一个项目工作得很好。我想把广告融入其中,制作一个免费的版本。我复制了该项目,重命名了它,并添加了iAd.framework。但这却导致了西格伯特的逃亡 调试并不能解释任何事情。。。它在根VC的viewDidLoad方法中设置某些VC属性时崩溃。我不认为这是相关的,但如果你不这么认为,可以提供细节 与iAd链接有什么诀窍吗?提前谢谢你的帮助 编辑:添加日志和一些说明 2014-04-25 16:04:04.249 MyAppTEST[686:60b]-[MPViewController set

我有一个项目工作得很好。我想把广告融入其中,制作一个免费的版本。我复制了该项目,重命名了它,并添加了iAd.framework。但这却导致了西格伯特的逃亡

调试并不能解释任何事情。。。它在根VC的
viewDidLoad
方法中设置某些VC属性时崩溃。我不认为这是相关的,但如果你不这么认为,可以提供细节

与iAd链接有什么诀窍吗?提前谢谢你的帮助

编辑:添加日志和一些说明


2014-04-25 16:04:04.249 MyAppTEST[686:60b]-[MPViewController setSoundName:]:发送到实例0x16e43a30的选择器无法识别

2014-04-25 16:04:04.252 MyAppTEST[686:60b]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[MPViewController setSoundName:]:发送到实例0x16e43a30的选择器无法识别'

它抱怨未识别的选择器(确切地说是属性设置器)。但除了链接iAd.framework之外,我没有做任何改变。如果我删除这个框架,它就会重新正常工作

经过更多的跟踪,我发现,在iAd框架中,
[self.storyboard instanceeviewcontrollerwhiteIdentifier:@“MPPageContentController”]返回类型不正确的视图控制器,但不是nil

MPViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MPPageContentController"];
if ([pageContentViewController isKindOfClass:[MPViewController class]]) {
    NSLog(@"OK");
}
删除iAd.framework时测试通过,否则测试失败!有什么建议吗

编辑2: 这真是个小故障!我已将测试更新如下:

    MPViewController *pageContentViewController = (MPViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"MPPageContentController"];
    if ([pageContentViewController isKindOfClass:[MPViewController class]]) {
        NSLog(@"OK");
    } else {
        NSLog(@"%@", [pageContentViewController description]);
    }
并且,如果将iAd添加到项目中,控制台中将记录以下内容: “MPViewController:0xa63fd30”


我确实在调试模式下的变量视图面板中看到了所需的MPViewController属性,尽管它们被声明为无法识别。。。这变得越来越奇怪,但我已经并没有前进的想法了!有什么帮助吗?

你的应用程序崩溃的原因是,正如你所看到的,苹果有一个名为
MPViewController
的类

更改ViewController的类名可以解决此问题。

我假设iAd在内部使用该类来显示广告。编译器决定使用Apple类而不是您的类,因此您得到了
不响应选择器
异常,因为Apple的
MPViewController
不响应该选择器



您可以看到,遵守Cocoa命名约定并在类前面加3个字母是一个好主意。我现在找不到参考资料,但我记得他们说(或说)苹果类保留了两个字母前缀。

SIGABRT很可能是由于异常而崩溃的。引发了什么异常?2014-04-25 16:04:04.249 MyAppTEST[686:60b]-[MPViewController setSoundName:]:发送到实例0x16e43a30 2014-04-25 16:04:04.252 MyAppTEST[686:60b]***由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'-[MPViewController setSoundName:]:无法识别的选择器发送到实例0x16e43a30'这是一个很长的过程,但您可以尝试显式强制转换吗<代码>MPViewController*pageContentViewController=(MPViewController*)[self.storyboard实例化控件标识符:@“MPPageContentController”]另一个远射:您是否尝试重命名视图控制器类?这个bug实际上很有趣;)这是难以置信的,但它有帮助!你是我的英雄;)请回答这个问题,我将投赞成票。顺便说一句,是ios错误还是什么?!非常感谢你的解释。这是一次很好的经历,下次我在选择VC名称时会更加小心)再次感谢。