您的位置:首页 > 移动开发 > Objective-C

Object-C中的内存管理小记

2015-11-11 09:38 363 查看
//错解1:内存泄露

- (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];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: