【发布时间】:2011-04-10 20:25:03
【问题描述】:
我有一个 iPhone SDK 应用程序,该应用程序具有多个视图,这些视图会随着用户创建内容而出现和消失。在设备上使用该应用程序一段时间后,我遇到以下崩溃:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) backtrace
#0 0x33369ebc in objc_msgSend ()
#1 0x320e5248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded] ()
#2 0x338b4a14 in -[NSObject performSelector:withObject:] ()
#3 0x320e5098 in -[UIAnimator stopAnimation:] ()
#4 0x320e4b7c in -[UIAnimator(Static) _advance:] ()
#5 0x320e4a34 in LCDHeartbeatCallback ()
#6 0x34350e60 in HeartbeatVBLCallback ()
#7 0x332e91c0 in IOMobileFramebufferNotifyFunc ()
#8 0x316532f8 in ?? ()
#9 0x33866b50 in __CFMachPortPerform ()
#10 0x338ae52a in CFRunLoopRunSpecific ()
#11 0x338adc1e in CFRunLoopRunInMode ()
#12 0x3434e1c8 in GSEventRunModal ()
#13 0x32002c30 in -[UIApplication _run] ()
#14 0x32001230 in UIApplicationMain ()
#15 0x00002ff8 in main (argc=1, argv=0x2ffff550) at /Developer/svn/MyCompany/iPhone/MyApplication/Other Sources/main.m:14
从跟踪中可以看出,其中唯一提到我的代码的是对 main 的调用。
我已经从 Xcode 运行 Build and Analyze,并且还设置它从终端运行我的项目上的 clang 分析器,这两者都找不到代码中的任何问题。我正在使用 iOS SDK 的最新版本(我还没有下载 4.1,但我使用的是 4.1 之前发布的版本)。
另外,我已经用模拟器在 Instruments 中运行了该应用程序,并且该应用程序没有内存泄漏。
我将尝试使用 NSZombieEnabled 变量,看看是否有任何发现,但问题是我需要在应用程序崩溃之前使用 30 到 40 分钟左右,我怀疑 @987654323 @ 甚至可能无法帮助我找到问题。
我所看到的崩溃似乎是模态视图在父视图控制器中调用委托时发生的。父视图控制器然后在关闭模态视图控制器之前进行一些处理。崩溃中有一些对动画和滚动视图的引用,但我不确定我可以做些什么来导致这些出现问题。有人对要寻找的东西有什么建议吗?
编辑:我已将NSZombieEnabled 标志放入应用程序,在设备上,它会在控制台中显示此消息:
2010-09-11 17:10:33.970 MyApplication[9321:207] ***
-[MyViewController respondsToSelector:]: message
sent to deallocated instance 0x7489480
据我所知,我将应用程序中使用的委托在我所有类的 dealloc 中设置为 nil,所以我不知道下一步该往哪里看。
我尝试对此使用malloc_history pid address 命令,但它说找不到进程,我尝试了9321、9321:207 和207。另外,如果我尝试使用MallocStackLogging变量,程序不会在设备上运行,我得到一堆malloc:无法在控制台中创建堆栈日志目录消息和程序崩溃。
哦,顺便说一句,我不能使用僵尸检查仪器,因为它似乎不适用于设备,而且我不能在模拟器中发生同样的崩溃。
【问题讨论】:
标签: iphone uiscrollview exc-bad-access