我在行
处收到EXC_BAD_ACCESS错误GADRequest *request = [[GADRequest alloc] init];
我没有来自Google AdMob SDK的GADRequest源代码。 堆栈跟踪如下。 它仅在设备上发生而不在模拟器上发生。
#0 0x34a80462 in objc_msgSend ()
#1 0x0017d9dc in +[GADRequest alloc] (self=<value temporarily unavailable, due to optimizations>, _cmd=<value temporarily unavailable, due to optimizations>) at /Users/mikeying/work/ios_sdk_git/googlemac/iPhone/GoogleAds/NextGen/Request/GADRequest.m:48
#2 0x0006e728 in -[AdWhirlAdapterGoogleAdMobAds getAd] (self=0x5511c0, _cmd=0x225209) at /Users/xxx/yyy/libs/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.m:68
#3 0x0007b4f6 in -[AdWhirlView makeAdRequest:] (self=0x5538f0, _cmd=0x22691c, isFirstRequest=1 '\001') at /Users/xxx/yyy/libs/AdWhirl/internal/AdWhirlView.m:370
#4 0x0007ac5c in -[AdWhirlView buildPrioritizedAdNetCfgsAndMakeRequest] (self=0x5538f0, _cmd=0x226965) at /Users/xxx/yyy/libs/AdWhirl/internal/AdWhirlView.m:235
#5 0x35818bbe in -[NSObject(NSObject) performSelector:withObject:] ()
答案 0 :(得分:0)
当消息发送到已解除分配的对象时,程序会收到EXC_BAD_ACCESS信号。将环境变量NSZombieEnabled设置为YES,对象永远不会被释放,而是作为zombie对象保存在内存中。当消息发送到僵尸对象时,执行将停止在通常会导致EXC_BAD_ACCESS信号的行上。
在Xcode 4.2中,您可以通过编辑方案设置环境变量,在左侧面板中选择“Run XYZ.app”阶段,然后选择右侧的“Arguments”选项卡。
完成后禁用NSZombieEnabled非常重要,否则您的应用程序会占用大量内存并最终崩溃。