gpt4 book ai didi

ios - Swift 从 didSet 调用委托(delegate)

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:16 28 4
gpt4 key购买 nike

我的 GameState 类有一个委托(delegate)。每次使用 didSet 更改 playing:Bool 时,我都试图调用 gameStateUpdated 方法。我的代表一直收到 EXC_BAD_ACCESS。甚至检查它是否为零。当 playing 被设置时,我得到一个 EXC_BAD_ACCESS 并且我确信我的 delegate 不是 nil。

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

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

编辑

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

最佳答案

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

也许无限递归

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

您可以很容易地检查这一点,只需在didSet 或以下代码行中添加一个断点

print("didSet called")

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

关于ios - Swift 从 didSet 调用委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com