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么?的主要内容,如果未能解决你的问题,请参考以下文章

nonatomic, retain,weak,strong用法详解

weak引用变量是否线程安全

dealloc时取weakself引起崩溃

iOS dealloc中初始化weak指针崩溃防护

我需要在 ARC 中使用 dealloc 方法吗?

__weak存在的问题