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

内存管理的思考模式

时间:2017-12-11 23:06:53      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:ocm   类别   class   nsobject   存在   iso   table   locate   turn   

自己生成的对象,自己所持有

使用以下名称开头的方法名意味着自己生成的对象只有自己持有

  • alloc
  • new
  • copy
  • mutableCopy

下列名称也意味着自己生成并持有对象

  • allocMyObject
  • newThisObject
  • copyThis
  • mutableCopyYourObject

但是对于以下方法名称,即使用alloc/new/copy/mutableCopy名称开头,并不属于同一类别的方法

  • allocate
  • newer
  • copying
  • mutableCopyed

非自己生成的对象,自己也能持有

/*

取得非自己生成并持有的对象

*/

id obj = [NSMutableArray array];

/*

取得的对象存在,但自己并不持有

*/

[obj retain]

/*

自己持有对象

*/

不再需要自己持有的对象时释放

自己生成并持有对象,可通过一下方法实现

-(id)allocObject//要符合驼峰命名法

{

    id obj = [[NSObject alloc]init];

    return obj;

}

那么[NSMutableArray array]方法使取得的对象存在,但自己不持有对象,又是如何实现的呢

-(id)object{

    id obj = [[NSObject alloc]init];

    [obj autorelease];

    return obj;

}

autorelease使对象在超出指定的生存范围时能够自动并正确的释放。

无法释放非自己持有的对象

释放非自己持有的对象会导致程序崩溃

 

内存管理的思考模式

标签:ocm   类别   class   nsobject   存在   iso   table   locate   turn   

原文地址:http://www.cnblogs.com/lmg4819/p/8025288.html

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