内存管理的思考模式

Posted 凌风4819

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理的思考模式相关的知识,希望对你有一定的参考价值。

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

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

  • 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使对象在超出指定的生存范围时能够自动并正确的释放。

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

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

 

以上是关于内存管理的思考模式的主要内容,如果未能解决你的问题,请参考以下文章

关于Objective-C内存管理及其原理

C基础作用域和内存管理

内存管理技术一:页表

Golang---内存管理(内存分配)

:存储管理

读书笔记系列—Objective-C中的内存管理