【发布时间】:2015-06-14 09:04:14
【问题描述】:
我在我的应用程序中使用 NSOperation 和 NSOperationQueue。当遇到以下 EXC_BAD_ACCESS 崩溃警告时,我应该从哪里开始调试?我只是google了一下,没有找到答案。
添加更多信息,这里是Debug Navigator的截图
是不是说发布东西的时候就崩溃了?
更新
我刚刚启用了僵尸对象并获得了以下信息
*** -[AFJSONResponseSerializer release]:消息发送到已释放实例 0x7fdfb378b550
添加更多信息,我没有在我的应用程序中使用 ARC。对于 AFNetwork 库,我为 AFNetwork 中的每个 *.m 文件添加了-fobjc-arc。
我想知道:
- 根据我之前在stackoverflow上找到的一些答案,我没有为每个NSOperation添加@autoreleasepool,对吗?
- 是否还需要为我在应用程序中实现的每个 *NSOperation.m 添加
-fobjc-arc? - 这是 AFNetwork 的已知问题吗?
【问题讨论】:
-
尝试使用 Zombies 模板在 Instruments 下运行您的应用。它会在您的应用使用已被释放的对象时向您显示,并向您显示该对象的历史记录。
-
您未能保留或过度释放
AFJSONResponseSerializer的实例。您需要检查保留和释放的历史记录,如 Instruments 中所示,以了解问题所在。添加@autoreleasepool将无济于事,因为这会释放一些没有它可能会泄露的东西(尽管我不希望这真的发生了)。因此,这将是 under 释放某些东西的可能解决方案。您永远必须使用 ARC 编译,尽管编写代码的方式必须与是否使用 ARC 编译相匹配。 (为 ARC 编写的代码必须使用 ARC 编译。) -
@KenThomases 非常感谢,我找到了一些关于仪器的教程,但是都太旧了,我也尝试用仪器调试,我点击“记录”时就崩溃了,你知道吗知道在哪里可以找到有关仪器的最新教程,特别是使用 xcode6。
-
好吧,如果单击记录时 Instruments 崩溃,我认为没有更好的教程会有所帮助。您可能需要重新安装 Xcode,或者您的操作系统安装有问题。 :-/
标签: ios objective-c afnetworking-2 nsoperation nsoperationqueue