iphone奇怪的崩溃在设备上,但没有在模拟器中看到

时间:2010-02-09 06:21:32

标签: iphone ios-simulator

我尝试在设备上安装并运行我的一个应用程序。在模拟器上,它工作正常。但是一旦在设备上,它会以某种方式崩溃。我试图调试,但我无法得到任何东西。 这是调试器控制台显示的内容..有人可以帮我这个..: 这是调试器日志:

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) `

2 个答案:

答案 0 :(得分:0)

您是否正在删除已被销毁的对象?

答案 1 :(得分:0)

我不确定这是否相关,但我曾遇到过类似的问题。 iPhone调用内存警告,因为它耗尽了RAM。因此,有时,iPhone会刷新缓存的内存,因此可能会导致某些视图或对象在不知不觉中被释放/解除分配。 iPhone模拟器永远不会调用内存警告,但在真机上,就会发生这种情况。

我不确定是否是这种情况,但请尝试这样做:在iPhone模拟器上,有一个“模拟内存警告”选项。尝试在模拟器上玩你的应用程序,偶尔尝试“模拟内存警告”。如果它崩溃了,那么我们可以得出结论,情况确实如此。

首先测试是否是这种情况。

或者,如果您想测试真正的iPhone何时调用“内存警告”,请尝试将NSLog或printf置于以下方法中:

- (void)didReceiveMemoryWarning {
  [super didReceiveMemoryWarning]; 
}