美文网首页
assign和weak的区别

assign和weak的区别

作者: AmazingMasterYi | 来源:发表于2017-07-03 20:14 被阅读0次

    assign和weak的区别

    • 本质区别
      • 速度比较: __unsafe_unretained > __weak
    @property (nonatomic, assign) Person *person;   *__unsafe_unretained _person;
    
    __unsafe_unretained的特点:
    1.不是强引用, 不能保住OC对象的命
    2.如果引用的OC对象销毁了, 指针并不会被自动清空, 依然指向销毁的对象(很容易产生野指针错误: EXC_BAD_ACCESS)
    
    @property (nonatomic, weak) Person *person;  // Person * _Nullable __weak _person;
    
    __weak的特点:
    1.不是强引用, 不能保住OC对象的命
    2.如果引用的OC对象销毁了, 指针会被自动清空(变为nil), 不再指向销毁的对象(永远不会产生野指针错误)
    
    • 用途
      • assign一般用在基本数据类型上面, 比如int\double等
      • weak一般用在代理对象上面, 或者用来解决循环强引用的问题

    相关文章

      网友评论

          本文标题:assign和weak的区别

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