Swift调用didSet

时间:2015-08-11 20:26:52

标签: ios swift properties

我有GameState班的代表。每次使用gameStateUpdated更改playing:Bool时,我都会尝试调用didSet方法。我一直在我的代表身上得到EXC_BAD_ACCESS。甚至检查它是否为零。 设置playing后,我得到EXC_BAD_ACCESS,我肯定我的delegate不是零。

var stateDelegate:GameStateDelegate?
var playing = false {
    didSet {
        stateDelegate?.gameStateUpdated(self.playing)
    }
}

我知道我不想从计算属性的setter中引用self.playing。但这不应该是计算属性。

修改

如果我使用stateDelegate?stateDelegate!,也会发生同样的事情。之前我有可选的链接,但它没有工作,所以我想我试着强迫它。

1 个答案:

答案 0 :(得分:4)

如果问题与使用!无关,那么让我们在其他地方查找问题。

也许无限递归

更具体地说gameStateUpdated内发生了什么?事实上,如果此方法正在更改playing属性,则didSet会一次又一次地触发......

您可以轻松查看此内容,只需将breakpoint添加到didSet或以下代码行。

print("didSet called")

如果多次调用didSet,那就是问题所在。