知识点总结20:assign和weak的区别
作者:
枫之叶_小乙哥 | 来源:发表于
2017-02-07 22:51 被阅读23次
assign和weak的区别
- 本质区别
- 速度比较: __unsafe_unretained > __weak
@property (nonatomic, assign) XMGDog *dog; // XMGDog *__unsafe_unretained _dog;
__unsafe_unretained的特点:
1.不是强引用, 不能保住OC对象的命
2.如果引用的OC对象销毁了, 指针并不会被自动清空, 依然指向销毁的对象(很容易产生野指针错误: EXC_BAD_ACCESS)
@property (nonatomic, weak) XMGDog *dog; // XMGDog * _Nullable __weak _dog;
__weak的特点:
1.不是强引用, 不能保住OC对象的命
2.如果引用的OC对象销毁了, 指针会被自动清空(变为nil), 不再指向销毁的对象(永远不会产生野指针错误)
- 用途
- assign一般用在基本数据类型上面, 比如int\double等
- weak一般用在代理对象上面, 或者用来解决循环强引用的问题
本文标题:知识点总结20:assign和weak的区别
本文链接:https://www.haomeiwen.com/subject/dwomittx.html
网友评论