6

我很少看到人们使用[weak self]indidSet . 是否有一个原因?

我试图[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]使用a是否违法didSet

问候,

4

2 回答 2

18

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

没有理由在weak self那里使用。处理程序不会以didSet与方法不创建所有权周期相同的方式创建所有权周期。

于 2017-04-29T09:00:09.047 回答
6

不要那样做。

使用它是荒谬的,[weak self]因为didSet它不会捕获任何东西并且永远不会创建保留周期。

于 2017-04-29T09:01:09.993 回答