weak和assign有什么区别

weak和assign有什么区别

  • 在ARC中,在有可能出现循环引用的时候,往往要通过让其中一端使用weak来解决,比如:delegate代理属性,代理属性也可使用assign,
    自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用weak,自定义IBOutlet控件属性一般也使用weak;当然,也可以使用strong,但是建议使用weak
  • weak策略在属性所指的对象遭到摧毁时,系统会将weak修饰的属性对象的指针指向nil,在OC给nil发消息是不会有什么问题的;如果使用assign策略在属性所指的对象遭到摧毁时,属性对象指针还指向原来的对象,由于对象已经被销毁,这时候就产生了野指针,如果这时候在给此对象发送消息,很容造成程序奔溃
  • assign 可以用于修饰非OC对象,而weak必须用于OC对象
  • unowned : 和OC中的__unsafe_unretained.当对象销毁时依然指向原来的位置(容易引起野指针)
    unowned不支持可选类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者:Umberto Raimondi,原文链接,原文日期:2016-10-27译者:shanks;校对:Crys...
    梁杰_numbbbbb阅读 2,891评论 1 13
  • 如果不知道 exe 所依赖的 dll,可能是动态加载的 dll,可通过 ollydbg 调试 exe,查看加载的模...
    wyrover阅读 495评论 0 0
  • 去年经朋友安利知道这种花界新鲜木乃伊,这种外形和触感都和新鲜无异,保持三年乃至更久的真花让俺又感叹了一下人类的想象...
    Katylove阅读 343评论 1 0
  • 失 态 陆小华 婚宴散罢,安、李、林三人结伴而归。 马脸、厚唇的安边走边用牙签挑剔他那付凹凸不平的板牙...
    陆小华1阅读 346评论 0 0
  • 此时我躺在谢先生的腿上,听他细说着他遇见的爱情和面包。而我是他最忠实的粉丝与听众。 01 2012年的这个时候,我...
    一路向北去你的季节阅读 576评论 8 6