assign 和 weak 区别?

assign

自动生成: __unsafe_unretained  
1.不是强引用 不能保住OC对象的命
2.如果引用的OC对象销毁了,指针并不会被自动清空,依然指向销毁的对象(很容易产生野指针错误 : EXC_BAD_ACCESS)

weak

生成:  _Nullable__weak
1.不是强引用,不能保住OC对象的命
2.如果引用的OC对象销毁了,指针被自动清空(变为nil),不再指向销毁的对象(永远不会产生野指针错误)

用途

  • assign 一般用在基本数据类型上面,你如int\double等
  • weak 一般用在代理对象上面,或者用在解决循环引用的问题
  • assign 的速度 > weak.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我个人理解就是:weak比assign多了一个功能就是当属性所指向的对象消失的时候(也就是内存引用计数为0)会自动...
    zhengelababy阅读 2,115评论 2 3
  • 在ARC中的assign和weak可以说非常相像,导致有很多人误以为他们是一摸一样的,在任何时候都可以划等价,但事...
    火星抄手阅读 590评论 0 1
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,940评论 1 10
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,239评论 30 472
  • 周六买书三种,未见物流,沟通卖家说刚发货。晚上整理领导录音,写稿子。昨晚听朋友韩达拉夫妇讲诉了他们自身关于...
    云雁阁主阅读 256评论 0 1