摘要: 虽然iOS 5.0版本之后加入了ARC机制,但由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准备好的内存泄露的Demo吧:leak app下载下来,打开运行,程序是一个寿司的列表,列出各种寿司卷。试着选择里面的几行,应该是选第二行的时候就崩溃了。崩溃截图:在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原 阅读全文
posted @ 2013-07-23 18:04 如来藏 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 如果声明的是retain类型的,然后使用self.的话此时引用计数会加1,变成1,如果同时又使用了alloc,那么引用计数又加一变成了2,那么如果只是release一次的话就会内存泄漏。这种情况下的处理是如果同时使用了alloc等控制权处理那么不要使用self.了,直接用变量名字即可。以下是我的一些总结,如果有不对的地方希望大家多多指教我们在官方文档里看到这样的代码:在MyClass.h文件中 @interface MyClass : NSObject { MyObject *myObject;}@property (nonatomic, retain) MyObject *myObject; 阅读全文
posted @ 2013-07-23 18:00 如来藏 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 最近有人问我关于什么时候用self.赋值的问题, 我总结了一下, 发出来给大家参考. 有什么问题请大家斧正. 关于什么时间用self. , 其实是和Obj-c的存取方法有关, 不过网上很多人也都这么解答的, 那它为什么和存取方法有关? 怎么有关的? 并没有多少人回答出来. 同时关于内存管理的内容, 请大家看旺财勇士的Objective-C内存管理总结~CC专版 , 有些东西我就不多解释了. 进入正题, 我们经常会在官方文档里看到这样的代码:MyClass.h@interface MyClass : NSObject { MyObject *myObject;}@property (nonato 阅读全文
posted @ 2013-07-23 18:00 如来藏 阅读(255) 评论(0) 推荐(0) 编辑