ios学习路线—Objective-C(检查内存泄露方式(Enable NSZombie Objects))
2016-06-15 15:07
447 查看
Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。
怎么开启僵尸对象呢?首先打开“Edit Scheme”(或者通过热键?<),然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项。
现在我们可以关掉ARC来测试重复释放的问题、异常和更容易产生的Crashs,但是即使开启ARC,重复释放和与内存相关的Crashs也经常发生。现在假设我们犯了一些错误导致了重复释放的发生来观察将要发生什么。
现在运行这段代码会发生重复释放的问题,程序将崩溃在主函数,会像下面这样:
Enable NSZombie Objects会让调试器看起来像这样:
这个例子看起来作用非常小,但是对于一个大工程通过Enable NSZombie Objects打印的信息是非常有用的。
怎么开启僵尸对象呢?首先打开“Edit Scheme”(或者通过热键?<),然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项。
现在我们可以关掉ARC来测试重复释放的问题、异常和更容易产生的Crashs,但是即使开启ARC,重复释放和与内存相关的Crashs也经常发生。现在假设我们犯了一些错误导致了重复释放的发生来观察将要发生什么。
UIView* view = [[[UIView alloc] init] autorelease]; //... //do something with view...clearly forgetting that it has been autoreleased. [view release];
现在运行这段代码会发生重复释放的问题,程序将崩溃在主函数,会像下面这样:
Enable NSZombie Objects会让调试器看起来像这样:
这个例子看起来作用非常小,但是对于一个大工程通过Enable NSZombie Objects打印的信息是非常有用的。
相关文章推荐
- ios学习路线—Objective-C(检查内存泄露方式(Static Analyzer))
- ios学习路线—Objective-C(堆(heap)和栈(stack))
- 关于Object=null
- ios学习路线—Objective-C(装箱和拆箱)
- JSONObject返回到前端转化出错
- js如何打印object对象
- iOS开发:Object-C的反射机制
- ios学习路线—Objective-C(属性修饰符)
- Objective-C学习之NSValue
- ios学习路线—Objective-C(autoreleasepool)
- WaitForMultipleObjects 降低cpu
- Swift anyobject 如何把value强转成String类型,或者判断value的类型?
- Objective-C - 异常处理(NSException)
- Windows 7 Object Headers
- ios学习路线—Objective-C(ARC)
- 1.多对多双向关联(用户对角色) Object,hbm
- 1.多对多单向关联(用户对角色) Object,hbm
- 【Halcon】获取Hobject的参数[pointer,type,width,height]
- my own objective of keras
- ios学习路线—Objective-C(MRC)