我正在开发的一个应用程序在 iPhone 上运行时不断崩溃,但在模拟器上却没有(尽管在没有符号 malloc_error_break 的情况下运行时会显示警告,但该应用程序在 Sim 上仍然运行)
我没有手动释放任何字符串,而是使用:
[[[NSString / NSMutableString alloc] init] autorelease];
(我一直为其他应用程序执行此操作,但从未给我带来过问题)
现在,当我将 malloc_error_break 设置为断点时,我得到:
2012-03-07 17:04:06.072 columns[15487:f803] *** -[CFString release]: message sent to deallocated instance 0x68c8210
使用 XCODE4 跳转到:
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); >>> Thread 1
[pool release];
return retVal;
}
在模拟器上运行时我也有 NSZombieEnabled 顺便说一句
如果有人可以帮助我如何在 XCODE 4 上调试它或向我指出在线教程,我将不胜感激!
问候
大卫
最佳答案
从你的 NSString 方法中删除 autorelease 并将它们添加回来,直到它崩溃(我想这就是现在的答案,所以......)
关于iphone: -[CFString release]: 消息发送到已释放的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9609691/