美文网首页
iOS笔记-weak和assign的区别

iOS笔记-weak和assign的区别

作者: HELLO_Cand | 来源:发表于2021-05-03 13:44 被阅读0次

    一、weak
     1、OC对象
     
    二、assign
     1、基本数据类型
     2、OC对象
     
     三、strong
     1、OC对象
     
     四、copy
     1、 NSString *
     2、block
     
     五、使用weak和assign修饰OC对象的区别
     1、成员变量
     2、weak生成的成员变量是用__weak修饰的,比如XMGCat * __weak _cat;
     3、assign生成的成员变量是用__unsafe_unretained修饰的XMGCat * __unsafe_unretained _cat;

    在ARC 里面采用 weak 。MRC 里面没有weak

    weak: __weak修饰。弱指针,不会让引用计数加1。如果指向对象销毁,指针会自动清空。

    assign:__unsafe_unretained 修饰。不会让引用计数加1。如果指向对象销毁,指针不会清空。

     2> __weak和__unsafe_unretained
     1) 都不是强指针(不是强引用),不能保住对象的命
     2) __weak : 所指向的对象销毁后,会自动变成nil指针(空指针),不再指向已经销毁的对象
     3) __unsafe_unretained : 所指向的对象销毁后,仍旧指向已经销毁的对象

    相关文章

      网友评论

          本文标题:iOS笔记-weak和assign的区别

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