出现这种情况, 也就是
对指针对象的过度释放,导致次指针为野指针报错, (注意:如:
[nil release] 操作空指针是不会报错的,在java中是有问题,
[野指针 release] 报错 crash 很危险,)解决中bug,有很多中,暂时简单的说下几种简单的:
1. 在xcode中Run,Stop 右边也就是选择设备的地方左边找到
Scheme >Edit Scheme>Arguments>Environment Variables下添加
1. NSZombieEnabled YES
2. MallocStackLoggingNoComp
act
YES
3. MallocStackLogging YES
> ok
第一項
让系统把错误地址打印出来
第二項 可 让xcode记录每个地址alloc的历史,这样我们就可以用命令把这个地址还原出来
第二項 可 让xcode记录每个地址alloc的历史,这样我们就可以用命令把这个地址还原出来
第三項
可開啟MallocStack,就知道記憶體在程式運行中被配置的歷史
(注意:这个命令只支持gdb,必须把控制台的输出改成gdb,只支持模拟器,不支持真机调试)
2.在.m或者.mm文件中 直接添加打印最后日志文件 代码如下:
#ifdef _FOR_DEBUG_
- (BOOL)respondsToSelector:(SEL)rtSelector
{
NSString *className = NSStringFromClass([self class]) ;
NSLog(@"%@ --> RTSelector: %s",className,[NSStringFromSelector(rtSelector)UTF8String]);
return [super respondsToSelector:rtSelector];
}
#endif
3.找到模糊的地方, 断点调试, 或者打印标识 从大范围到小范围,
========================暂时写这几种, 还有一种leak 中 也是好办法, 在更新……
一起学习,进步!..====================================
一起学习,进步!..====================================