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