美文网首页
Chapter1:自动引用计数

Chapter1:自动引用计数

作者: 快乐捣蛋鬼 | 来源:发表于2019-08-22 20:18 被阅读0次

1.内存管理/应用计数

1.2.1内存管理的思考方式

  • 自己生成的对象,自己所持有。
  • 非自己生成的对象,自己也能持有。
  • 不再需要自己持有的对象时释放。
  • 非自己持有的对象无法释放。

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

  • alloc
  • new
  • copy
  • mutableCopy
  • allocnew
id obj = [[NSObject alloc] init];
id obj = [NSObject new];

以上两者完全一致,指向生成并持有对象的指针被赋给变量obj

  • copymutableCopy
    copy方法利用基于NSCopying方法约定,由各类实现的copyWithZone:方法生成并持有对象的副本。与copy方法类似,mutableCopy方法利用基于NSMutableCopying方法约定,由各类实现的mutableCopyWithZone:方法生成并持有对象的副本。

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

  • allocMyObject
  • newThatObject
  • copyThis
  • mutableCopyYourObject

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

  • allocate
  • newer
  • copying
  • mutableCopyed

非自己生成的对象,自己也能持有
用alloc/new/copy/mutableCopy 以外的方法取得的对象,因为非自己生成并持有,所以自己不是该对象的持有者。

id obj = [NSMutableArray array];

NSMutableArray类对象被赋给变量obj,但变量obj自己并不持有该对象。使用retain方法可以持有对象。

id obj = [NSMutableArray array];
[obj retain];

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

2.

3.

相关文章

网友评论

      本文标题:Chapter1:自动引用计数

      本文链接:https://www.haomeiwen.com/subject/oemnsctx.html