详情请查看:http://blog.csdn.net/hherima/article/details/38661803
总结如下:
weak的功能:
* 若使用__weak修饰符的变量引用对象被废弃时,则将nil赋值给该变量
* 使用附有__weak修饰符的变量,就是使用注册到autoreleasepool的对象
ARC对象释放的过程:
1. objc_release
2. 因为引用计数为0所以执行dealloc
3. _objc_rootDealloc
4. object_dispose
5. objc_destructInstance
6. objc_clear_deallocating
而,调用objc_clear_deallocating的动作如下:
1. 从weak表中获取废弃对象的地址为键值的记录。
2. 将包含在记录中的所有附有__weak修饰符变量的地址,赋值为nil
3. 从weak表中删除记录
4. 从引用计数表中删除废弃对象的地址作为键值的记录
网友评论