iPhone 应用程序崩溃并出现异常

标签 iphone ios xcode ipad iad

我有一个使用 iAd 的 iPhone 应用程序...该应用程序有时会崩溃并显示以下消息;

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType bannerViewDidLoadAd:]: unrecognized selector sent to instance 0x621cd10'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00e015a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00f55313 objc_exception_throw + 44
    2   CoreFoundation                      0x00e030bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00d72966 ___forwarding___ + 966
    4   CoreFoundation                      0x00d72522 _CF_forwarding_prep_0 + 50
    5   CoreFoundation                      0x00d71c7d __invoking___ + 29
    6   CoreFoundation                      0x00d71b51 -[NSInvocation invoke] + 145
    7   CoreFoundation                      0x00d72a04 ___forwarding___ + 1124
    8   CoreFoundation                      0x00d72522 _CF_forwarding_prep_0 + 50
    9   iAd                                 0x00[Switching to process 8860 thread 0x207]
0139f9 -[ADDistributedMessagingCenter messagePort:receivedMessage:withData:] + 251
    10  iAd                                 0x00014012 ADMessagePortCallBack + 75
    11  CoreFoundation                      0x00db8f4c __CFMessagePortPerform + 396
    12  CoreFoundation                      0x00de2944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    13  CoreFoundation                      0x00d42cf7 __CFRunLoopDoSource1 + 215
    14  CoreFoundation                      0x00d3ff83 __CFRunLoopRun + 979
    15  CoreFoundation                      0x00d3f840 CFRunLoopRunSpecific + 208
    16  CoreFoundation                      0x00d3f761 CFRunLoopRunInMode + 97
    17  GraphicsServices                    0x033fe1c4 GSEventRunModal + 217
    18  GraphicsServices                    0x033fe289 GSEventRun + 115
    19  UIKit                               0x002ffc93 UIApplicationMain + 1160
    20  MyApp                     0x00001ba8 main + 102
    21  MyApp                     0x00001b39 start + 53
)
terminate called after throwing an instance of 'NSException'

下面是我的 NSZombie 消息;

#   Category    Event Type  RefCt   Timestamp   Address Size    Responsible Library Responsible Caller
77  DetailController    Zombie  -1  04:01.914.883   0x5768bd0   0   iAd -[ADDistributedMessagingCenter messagePort:receivedMessage:withData:]

还有bannerViewDidLoadAd代码;

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    if (!bannerIsVisible)
    {
        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
        // assumes the banner view is offset -50 pixels so that it is not visible.
        banner.frame = CGRectOffset(banner.frame, 0, -50); // if the banner is on top of the screen use 50
        [UIView commitAnimations];
        bannerIsVisible = YES;
    }
}

请帮我解决这个问题。谢谢。

最佳答案

基本上,您使用错误的对象类型调用bannerViewDidLoadAd:。看来您正在使用某种调度机制来执行此操作。您在为该方法设置分派(dispatch)请求时指定了错误的对象,或者您未能保留该对象,并且该对象已被删除并替换为 NSType 对象。

因此,找到代码中提到 bannerViewDidLoadAd: 的位置,并确保与其一起使用的对象是正确的并得到适当保留。

关于iPhone 应用程序崩溃并出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375673/

相关文章:

ios - NSJSONSerialization 上的 exc_bad_instruction

iphone - 全局定义服务器IP

iphone - UIFont Woes(一些自定义字体加载,但其他的不是)

javascript - IOS - 如果仪器测试失败则终止应用程序

ios - 有没有办法从 Any 获取 Class(当 Any 是对象的实例时)?

ios - 在另一个 View 前将 View 显示为向上滑动手势

ios - 如何在 objective-c 中用破折号替换空格?

iphone - 如何确保应用程序退出时 NSUserDefaults 设置保存到磁盘?

iphone - UIView 动画完成 block 在其他动画开始时触发

ios - 过渡到特定场景时,Unity应用在iOS14上崩溃