Iphone 轨道“;已发送到解除分配实例的消息“;通过仪器
在XCode 4.2中,我需要一些仪器方面的帮助来追踪EXC_BAD_访问错误的原因。启用NSZombie标志后,当应用程序在设备上崩溃时,我在控制台上看到以下内容Iphone 轨道“;已发送到解除分配实例的消息“;通过仪器,iphone,xcode,exc-bad-access,instruments,Iphone,Xcode,Exc Bad Access,Instruments,在XCode 4.2中,我需要一些仪器方面的帮助来追踪EXC_BAD_访问错误的原因。启用NSZombie标志后,当应用程序在设备上崩溃时,我在控制台上看到以下内容 *** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x8674e30 我用过仪器,但看不到僵尸的档案。我使用了配置文件,但很快就迷路了。我为应用程序启用了ARC(希望摆脱alloc/retain/release),但仍然存在同样的问题 我如何
*** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x8674e30
我用过仪器,但看不到僵尸的档案。我使用了配置文件,但很快就迷路了。我为应用程序启用了ARC(希望摆脱alloc/retain/release),但仍然存在同样的问题
我如何使用仪器来追踪这一点 看看我在模拟器上使用僵尸profilier的经验。基本上,您应该能够通过以下方式使用profilier:
Shell malloc_history process_id memory
例如,Shell malloc_历史进程id 0x11afab80
为相同的1)MallocstackLogging 2)NsDebugEnabled 3)NSZombieEnabled启用以下功能
这将解决问题配置文件或使用仪器运行(command+I),然后使用泄漏工具。
在内部单击泄漏部分并选中收集泄漏内存内容复选框。
祝您好运。您的视图层次结构中是否有任何*UIScrollView*s,您是否向它们发送类似scrollToVisibleRect:animated:的消息 如果是,请尝试为动画参数传递“否”。iOS5似乎在滚动视图和嵌入动画方面存在一些问题。你所看到的同样的崩溃已经让我疯狂了好几天(没有可用的调用堆栈),最后我把它缩小到滚动视图调用。
希望有帮助。我也有同样的问题。首先,我使用了Raffaello Colasante的解决方案,并将
NO
传递给scrollRectToVisible:animated:
。但是我注意到这个方法是在另一个线程上处理的。
您应该检查是否在主线程上调用[uitableview scrollRectToVisible:CGRectMake(0,0,1,1)animated:YES]
(所有ui操作都应该在主线程上执行)。我更改代码以便在主线程上调用它
发件人:
致:
注意:(setOptionalActions:)调用->(scrollRectToVisible:动画:)
现在问题解决了
请注意,您可以使用以下内容,而不是使用:
@约翰·桑德斯:编辑了我的问题……这是针对iPhone的,使用的是XCode 4.2坦克,罗伯特:我会查看并报告。:)我的Instruments-4.2(4233)版本没有您在链接中提到的僵尸配置文件。是藏在什么地方,还是我没有最新版本的仪器。我使用的是XCode 4.2。不要自己打开仪器,先把它关上。然后在配置文件模式下启动XCode并使其启动instruments。您应该在第一次加载时看到该选项。否则,您使用的是什么编译器和调试器(llvm/gdb)?此外,只有在模拟器上而不是在设备上运行时,您才能看到zombie选项。谢谢,Rahul…..1。找不到如何启用NSDebugEnabled。2.上面的十六进制数是多少?它是释放实例的地址吗?那么为什么它前面有进程id?3.我在XCode的控制台中尝试了该命令,但出现了错误-“shell”不是有效的命令十六进制数是内存地址。在您的情况下,它是“0x8674e30”。请仔细阅读我刚刚读过的教程-它指的是Xcode 2.x中的功能-其中一些功能在Xcode 4.2中不存在(如NSDebugEnabled)。我有点困惑,你必须进入你的可执行文件的“获取信息”上下文菜单(在XCode左面板的“可执行文件”组中)。然后进入参数选项卡。您可以将上面指定的环境变量添加到底部的框中(“要在环境中设置的变量”).谢谢-我会探索的。谢谢Raffaello…不,我没有UIScrollView,但是有UITableView。我想我正在使用ScrollToRowatineXpath:atScrollPosition:animated:method。我已经做了更改,在我的简短测试中,崩溃没有发生。我将在设备上进行广泛测试,并再次发布状态。谢谢,这是可能是救命恩人。在做了这些改变之后,我还没有看到崩溃。再次感谢你,拉斐洛。(我通常讨厌这种评论,但是)谢谢!谢谢!谢谢!我花了一个小时试图弄清楚为什么我会得到一个随机的NSArray溢出,并且在代码中的任何地方都找不到它。关闭我行的动画选择调用修复了崩溃!另一个恼人的iOS5错误…你不需要将动画设置为否。如果你在V中将UITableView的委托设置为零iewWillUnload,这将解决问题。问题是核心动画保留动画的滚动视图,然后尝试发送代理消息。你好,Ariel,感谢关于仪器的指针-它一直困扰着我。我想我应该系紧腰带,开始使用/理解它。问题最终解决了非常琐碎…我结束了4个工作日中的2个工作日!热爱这个社区。感谢所有回复我的人。。。。
//method called not from main thread
...
[someObjectInstance setOptionalActions:optActions];
//method called not from main thread
...
dispatch_async(dispatch_get_main_queue(), ^{
//now method called from main thread
[someObjectInstance setOptionalActions:optActions];
});
@implementation SomeObjectClass
...
- (void) setOptionalActions:(NSArray *) actionsArray {
... // handling of array
[myTableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:YES];
}
...
@end
//method called not from main thread, but will be performed on main thread
[someObjectInstance performSelectorOnMainThread:@selector(setOptionalActions:) withObject:optionalActions waitUntilDone:NO];