码迷,mamicode.com
首页 > 其他好文 > 详细

Object-C中的内存管理小记

时间:2015-11-11 09:55:47      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

//错解1:内存泄露

1 - (void)setObj:(Object *)newObj {
2     obj = [newObj retain];
3 }

  当新旧对象指向不同时,执行这段代码后,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

1  - (void)setObj:(Object *)newObj {
2      if(obj != newObj) {
3          [obj release];   
4         obj = [newObj retain];
5     }    
6 }    

 

Object-C中的内存管理小记

标签:

原文地址:http://www.cnblogs.com/damon-sf/p/4955231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!