iOS笔记-weak和assign的区别
2021-05-03 本文已影响0人
HELLO_Cand
一、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 : 所指向的对象销毁后,仍旧指向已经销毁的对象