黑马程序员----Objective-C学习笔记之单个对象内存管理
2015-10-06 17:10
513 查看
------Java培训、Android培训、iOS培训、.Net培训--------
1、避免使用僵尸对象的方法
避免使用僵尸对象的方法是,在堆内存释放后,给对象赋值为nil,因为给
nil发送消息是没有任何效果的。
2、单个内存对象的内存泄露问题
1)情况一
2)情况二
正确做法:
情况三:
正确做法:
情况四:
在函数中对传入的对象进行了retain,其实也是不遵守内存管理原则
1、避免使用僵尸对象的方法
避免使用僵尸对象的方法是,在堆内存释放后,给对象赋值为nil,因为给
nil发送消息是没有任何效果的。
2、单个内存对象的内存泄露问题
1)情况一
@autoreleasepool { //此时p是个局部变量,程序结束时p被释放,但是该对象在堆区分配的内存没有被释放,称为【内存泄露】 //创建完成后没有释放 Person *p = [Person new]; }
2)情况二
@autoreleasepool { //没有遵守内存管理原则 Person *p = [Person new]; [p retain]; [p release]; }
正确做法:
@autoreleasepool { //正确做法 Person *p = [Person new]; [p retain]; [p release]; [p release]; }
情况三:
@autoreleasepool { //不当的使用nil Person *p = [Person new]; p = nil; [p eat]; [p release]; }
正确做法:
@autoreleasepool { //不当的使用nil Person *p = [Person new]; [p eat]; [p release]; p = nil; }
情况四:
在函数中对传入的对象进行了retain,其实也是不遵守内存管理原则
相关文章推荐
- 黑马程序员----Objective-C学习笔记之内存管理的原则
- 黑马程序员----Objective-C学习笔记之内存管理
- 【IOS 开发学习总结-OC-33】★★objective-c之文件 I/O概述+NSData/NSMutableData
- [Training Video - 3] [Groovy in Detail] Non-static and Static variables, objects and object referances
- objective-c复制
- OC中类的封装
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- Objective-C---7---NSDate Protocol Category
- Foundation框架之NSArray
- json 拼装空list、object
- java将系列化后的对象保存在文件中,及反系列化 (ObjectInputStream,ObjectOutputStream)
- JAXB XML与Object之间的转换
- 学习Object类
- Foundation框架之可变和不可变
- C#学习日记14---引用类型 之 object类
- iOS开发 —— Objective C语言知识点总结
- Incompatible pointer types returning 'NSArray *' from a function with result type 'xxx *'
- Objective-C 编程艺术
- Objective-C NSFileManager 管理文件和目录