我被一个我无法弄清楚如何调试的bug所困扰。基本上我在模拟器上运行我的代码,一切都很好。手机上的Debuggin iPhone应用程序
但是,当我转到实际设备时,出现EXC_BAD_ACCESS错误。不幸的是,当在调试器下的手机上运行时,该死的事情工作得很好,所以我无法判断错误发生的位置。
我确实得到了一个我无法重现的堆栈跟踪,所以我很确定我的代码中导致问题的那行是这一行(但我不能为我的生活弄清楚这怎么可能):是
[[NSNotificationCenter defaultCenter] postNotificationName:@"SubscriberChanged" object: nil];
实际的错误上objc_msgSend这一行约四帧以下,但其似乎是在iPhone SDK的一部分代码,所以我没有源检查它。
任何人都可以给我几个关于如何去找出这个问题的方法吗?我有一个最后期限运送这个东西,我不能让它像这样出去......
我终于成功地在调试器中重现了这一点。我得到的堆栈跟踪如下:
#0 0x30011940 in objc_msgSend()
#1 0x3054dc80 in _nsnote_callback()
#2 0x3024ea58 in _CFXNotificationPostNotification()
#3 0x3054b85a in -[NSNotificationCenter postNotificationName:object:userInfo:]()
#4 0x3054dbc0 in -[NSNotificationCenter postNotificationName:object:]()
#5 0x000027c6 in -[My2CentsAppDelegate handleMOCChange:] (self=0x1159d0, _cmd=0x2bf90, notification=0x147400) at /Users/sdussin/Desktop/UPOD Research LLC/Development/My2Cents/Classes/My2CentsAppDelegate.m:52
#6 0x3054dc80 in _nsnote_callback()
#7 0x3024ea58 in _CFXNotificationPostNotification()
#8 0x3054b85a in -[NSNotificationCenter postNotificationName:object:userInfo:]()
堆栈跟踪中的帧#5对应于上面的行。
原来的通知是问题。我显然在我的NIB中有几个视图对象的实例。当他们得到加载时,他们每个都注册通知,然后只保留其中的一个。其他人被释放,但未能取消通知。 感谢所有... – Steve 2010-02-01 20:09:51