unsafe_unretained和weak弱引用避免保留环(循环引用)区别

来源:互联网 发布:中国联通是什么网络 编辑:程序博客网 时间:2024/06/05 22:52
unsafe_unretained和weak都可以作为属性特质避免循环引用,他们的区别是:unsafe_unretained所修饰属性是不安全的,而且不归此事例拥有,如果系统已经把属性所指的那个对象回收,那么在回收的对象上调用方法会导致程序崩溃,而weak所修饰属性则会指向nil,这样就不会导致程序崩溃。所以委托对象属性使用weak修饰有两个作用,一个是避免循环引用,一个是委托对象回收时,继续使用弱引用避免程序崩溃。