斯威夫特 - 在didSet中弱自我

时间:2017-04-29 08:58:31

标签: swift weak-references didset

我很少看到人们在[weak self]中使用didSet。有这个原因吗?

我尝试在[weak self]变量中使用didSet

var data: Dictionary<String, Any>! { // [1]
        didSet { [2]
            self?.layoutSubviews()
        }
    }

我将[weak self] in置于[1]或[2],我仍然收到错误:Use of unresolved identifier weak

为什么?将[weak self]用于didSet

是不合法的

此致

2 个答案:

答案 0 :(得分:12)

didSet不是闭包,你不能使用闭包语法。

没有理由在那里使用weak selfdidSet处理程序不会像方法创建所有权周期一样创建所有权周期。

答案 1 :(得分:6)

不要这样做。

使用[weak self]是没有意义的,因为didSet不会捕获任何内容,也永远不会创建保留周期。