美文网首页
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