iOS开发系列-weak与unsafe_unretained修饰符
2018-05-14 16:17 iCoderHong 阅读(429) 评论(0) 编辑 收藏 举报概述
在iOS内存管理中,为防止循环引用,定义类的内部对象属性使用weak、unsafe_unretained修饰符,不产生强引用。
开发中一般使用的weak修饰符,那么接下来说下wea
k跟unsafe_unretained
的本质区别。这里涉及顺便了解到一些iOS内存管理的本质。
weak与unsafe_unretained区别
weak修饰的对象指针,当指向的对象在内存中销毁后,该指针自动赋值为nil。也就是说指针变量保存的地址值为0x0。
对于Objective-C的特性 给nil发送消息不会报错。
unsafe_unretained修饰的对象指针,当指向的对象在内存中销毁后,此时的对象称之为僵尸对象。该指针依然指向该对象,即指针变量依然保存着销毁对象的内存地址。
对于Objective-C的特性,给僵尸对象发送消息会造成野指针错误。