简体   繁体   English

iPhone应用程序异常崩溃

[英]iPhone app crashes with exception

I have an iPhone app which uses iAd...The app crashes sometime with the following message; 我有一个使用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'

Below is my NSZombie message; 以下是我的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:]

Also bannerViewDidLoadAd code; 还有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;
    }
}

Please help me fix the same. 请帮助我解决相同的问题。 Thank you. 谢谢。

Basically you're calling bannerViewDidLoadAd: with the wrong object type. 基本上,您使用错误的对象类型来调用bannerViewDidLoadAd: It appears that you're using some sort of dispatch mechanism to do this. 看来您正在使用某种调度机制来执行此操作。 Either you specified the wrong object when you set up the dispatch request for that method, or you failed to retain the object and it's been deleted and replaced with a NSType object. 在为该方法设置调度请求时,您指定了错误的对象,或者您未能保留该对象,并且该对象已被删除并替换为NSType对象。

So find where bannerViewDidLoadAd: is mentioned in your code and make sure the object being used with it is correct and is appropriately retained. 因此,请找到代码中提到bannerViewDidLoadAd:位置,并确保与其一起使用的对象正确无误并得到适当保留。

bannerViewDidLoad is getting called after it's delegate is released, hence the zombie message. 释放委托后,bannerViewDidLoad被调用,因此出现了僵尸消息。

I would guess that this means your ad isn't being released and is sticking around after your controller is going away. 我猜这意味着您的广告没有发布,并且在您的控制器消失后仍会停留。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM