2011-12-04 8 views
0

私はiPhoneアプリを使用しています...アプリはいつか次のメッセージでクラッシュします。例外付きで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 code;

- (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; 
    } 
} 

同じように修正してください。ありがとうございました。

+1

あなたはコードを添付していません:) NSZombieEnabledをオンにしてみてください。おそらく呼び出すオブジェクトが 'nil'ですが、コードビットなしで言うのは難しいでしょう。 –

+0

このメソッドを呼び出す場所、bannerViewDidLoadAd:を確認します。これらの場所にブレークポイントを追加し、コードをデバッグしようとします。 – Robin

+0

NSZombieメッセージを追加しました....ちょうど追加するには、リストと詳細コントローラ(iAdを持っています)があります。詳細ビューからリストビューに移動しようとすると、 – testndtv

答えて

1

基本的に間違ったオブジェクトタイプのbannerViewDidLoadAd:を呼び出しています。これを行うために何らかのディスパッチメカニズムを使用しているようです。そのメソッドのディスパッチ要求をセットアップするときに間違ったオブジェクトを指定したか、オブジェクトを保持できず、削除されてNSTypeオブジェクトに置き換えられました。

あなたのコードにbannerViewDidLoadAd:が記載されている場所を見つけて、それと共に使用されているオブジェクトが正しいものであり、適切に保持されていることを確認してください。

+0

ここで、bannerViewDidLoadが使用されているコードを追加しました。 – testndtv

+0

私はコードをmy – testndtv

+0

@testndtv - いいえ、あなたはしませんでした。 –

0

delegateがリリースされた後に、そのゾンビメッセージが表示された後に、bannerViewDidLoadが呼び出されています。

これは、あなたの広告がリリースされておらず、コントローラが遠ざかった後に固執していることを意味します。

+0

こんにちは...問題を解決するにはどうすればよいですか?広告がリリースされるようにするにはどうすればよいですか? – testndtv

+0

View Controllerのdeallocメソッドでは、[バナーリリース] – Randall

+0

に入れてください。実際には、私はバナーコードをviewDidLoad内に/ローカルに持っています...私はそれをコンセントなどに移動する必要があります。実装に関する追加の詳細... – testndtv

関連する問題