Object-C中的内存管理小记
2015-11-11 09:38
363 查看
//错解1:内存泄露
当新旧对象指向不同时,执行这段代码后,obj会指向另一个对象,而它之前指向的对象没有得到释放
//错解2:内存可能泄露
当新旧对象指向相同时,执行[obj release];后,内存已经释放,再对newObj发送消息,就可能使程序崩溃
//正解1
//正解2
- (void)setObj:(Object *)newObj { obj = [newObj retain]; }
当新旧对象指向不同时,执行这段代码后,obj会指向另一个对象,而它之前指向的对象没有得到释放
//错解2:内存可能泄露
- (void)setObj:(Object *)newObj { [obj release]; obj = [newObj retain]; }
当新旧对象指向相同时,执行[obj release];后,内存已经释放,再对newObj发送消息,就可能使程序崩溃
//正解1
- (void)setObj:(Object *)newObj { [obj autorelease]; obj = [newObj retain]; }
//正解2
- (void)setObj:(Object *)newObj { if(obj != newObj) { [obj release]; obj = [newObj retain]; } }
相关文章推荐
- Java objectOutputStream的用法
- Downcast from'[NSObject:AnyObject]?'to'Dictionary<NSObject,AnyObject>'only unwraps
- Linq to object
- iOS常见错误2-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter
- [Object-C]微博登陆遇见的坑
- BOM(Browser Object Model) 浏览器对象模型
- kobject结构分析
- [Object-C]第三方微信登陆需要"发短信"
- 基于 Objective-C OC的省市区代码(字典数组嵌套)
- instanceType和id的异同
- Objective - c随笔
- C++ 和 Object-c 混编时 提示的 class 错误
- objectLiteral.js
- Object类中的方法介绍
- 三、ObjectARX 创建一条直线
- 【iOS学习笔记 15-11-10】Objective-C中根据函数名调用函数
- libsqlite3.tbd is not an object file (not allowed in a library)的解决办法
- Objective-C实现Mac终端日历程序(cal命令)
- 二、根据向导创建ObjectARX 程序
- java实现map和object互转的三种方法