weak属性需要在dealloc中置nil么?
Posted StarainDou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了weak属性需要在dealloc中置nil么?相关的知识,希望对你有一定的参考价值。
出题者简介: 孙源(sunnyxx),目前就职于百度
整理者简介:陈奕龙(子循),目前就职于滴滴出行。
转载者:豆电雨(starain)微信:doudianyu
不需要。
在ARC环境无论是强指针还是弱指针都无需在 dealloc 设置为 nil , ARC 会自动帮我们处理
即便是编译器不帮我们做这些,weak也不需要在 dealloc 中置nil:
正如上文的:runtime 如何实现 weak 属性 中提到的:
我们模拟下 weak 的 setter 方法,应该如下:
- (void)setObject:(NSObject *)object
{
objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN);
[object cyl_runAtDealloc:^{
_object = nil;
}];
}
也即:
在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。
以上是关于weak属性需要在dealloc中置nil么?的主要内容,如果未能解决你的问题,请参考以下文章