美文网首页
iOS retain,assign,strong,weak区别以

iOS retain,assign,strong,weak区别以

作者: 花花也是我 | 来源:发表于2017-03-29 15:31 被阅读0次

    MRC:

          retain:  用于指针变量。就是说你定义了一个变量,然后这个变量在程序的运行过程中会被更改,并且影响到其他方法。一般是用于字符串( NSString,NSMutableString),数组(NSMutableArray,NSArray),字典对象,视图对象(UIView ),控制器对象(UIViewController)等 
          assign:  用于非指针变量,基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char, 等),另外还有id
    

    ARC:

          strong(强引用): 相当于MRC下的retain
          weak(弱引用): 相当于MRC下的assign
    
    copy与retain区别:
          retain是指针拷贝,set方法应该是浅复制。
          copy是内容拷贝,set方法应该是深复制了。copy只用于NSString而不能用于NSMutableString。
          //copy其实是建立了一个相同的对象,而retain不是;
          比如一个NSString对象,地址为0x1111,内容为@”STR”,copy到另外一个NSString之后,地址为0x2222,内容相同,新的对象retain为1,旧的对象没有变化;retain到另外一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1。
    

    关于引用计数

    • 生成对象并设置引用计数 = 1 : alloc,new,copy,mutableCopy (不需要时,必须释放)
    • 持有对象,使引用计数 + 1 : reatain (不需要时,必须释放)
    • 释放对象,使引用计数 - 1 : release
    • 废弃对象,使引用 = 0 : dealloc

    相关文章

      网友评论

          本文标题:iOS retain,assign,strong,weak区别以

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