我尝试在设备上安装并运行我的一个应用程序。在模拟器上,它工作正常。但是一旦在设备上,它会以某种方式崩溃。我试图调试,但我无法得到任何东西。 这是调试器控制台显示的内容..有人可以帮我这个..: 这是调试器日志:
Program received signal EXC_BAD_ACCESS, Could not access memory.`
`Reason: KERN_PROTECTION_FAILURE at address: 0x00000000`
`[Switching to thread 12291]`
`0x327083e0 in _objc_selopt_data ()`
`Program received signal: “EXC_BAD_ACCESS”.`
`Unable to disassemble _objc_selopt_data.`
(gdb) bt`
`#0 0x327083e0 in _objc_selopt_data ()`
`#1 0x32fb93c0 in WebCore::FrameLoader::detachFromParent ()`
`#2 0x303e1aec in -[WebView(WebPrivate) _close] ()`
`#3 0x303e19d8 in -[WebView close] ()`
`#4 0x303e1940 in -[WebView dealloc] ()`
`#5 0x32d86640 in -[NSObject release] ()`
`#6 0x32f4a294 in WebCoreObjCDeallocOnWebThreadImpl ()`
`#7 0x32f8b9c4 in HandleWebThreadReleaseSource ()`
`#8 0x32da43a6 in CFRunLoopRunSpecific ()`
`#9 0x32da3c1e in CFRunLoopRunInMode ()`
`#10 0x32f486f8 in RunWebThread ()`
`#11 0x327587b8 in _pthread_body ()`
`#12 0x00000000 in ?? ()`
`(gdb) `
答案 0 :(得分:0)
您是否正在删除已被销毁的对象?
答案 1 :(得分:0)
我不确定这是否相关,但我曾遇到过类似的问题。 iPhone调用内存警告,因为它耗尽了RAM。因此,有时,iPhone会刷新缓存的内存,因此可能会导致某些视图或对象在不知不觉中被释放/解除分配。 iPhone模拟器永远不会调用内存警告,但在真机上,就会发生这种情况。
我不确定是否是这种情况,但请尝试这样做:在iPhone模拟器上,有一个“模拟内存警告”选项。尝试在模拟器上玩你的应用程序,偶尔尝试“模拟内存警告”。如果它崩溃了,那么我们可以得出结论,情况确实如此。
首先测试是否是这种情况。
或者,如果您想测试真正的iPhone何时调用“内存警告”,请尝试将NSLog或printf置于以下方法中:
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}