NSZombie的替代品

5 memory objective-c nszombie ios

我正在尝试使用NSZombie调试EXC_BAD_ACCESS崩溃.我的应用程序创建了许多大型对象,并且启用了NSZombie后,它们不会被释放,导致应用程序在几秒钟内崩溃.这意味着在应用程序因内存不足而崩溃之前,我甚至无法导致EXC_BAD_ACCESS崩溃.

还有其他选择吗?我可以在特定文件而不是整个项目上启用NSZombie吗?我怎么能调试这个崩溃(我知道它是由UIGestureRecognizer引起的,但我使用它们很多,所以它不会显着缩小问题范围).

谢谢.

编辑:感谢您的建议.我想我可能已经解决了这个问题,并会在经过更多测试后报告.

编辑2:自己解决了这个问题,但选择了答案,这似乎是未来任何类似问题的良好解决方案.

Tom*_*mmy 2

我能想到的就是手动实现;创建一个代理容器,其中包含类型的对象id并指定该对象-forwardingTargetForSelector:以及让它响应-isKindOfClass:等。

禁用代理的 ARC,并让它在指定转发目标时保留自身init并检查自己。retainCount

如果计数为 1,则引发异常或记录警告或其他任何内容。

让可疑类将自己包装起来并返回一个代理作为其单元的最后一行。

为了获得可能的奖励积分,请将其存储[NSThread callStackSymbols]在代理单元中的某个位置(可能在磁盘上),这样您至少可以找出创建错误管理对象的位置。