gpt4 book ai didi

ios - 如果即使 Int 的比较值不相等也正在执行 block (Swift)

转载 作者:行者123 更新时间:2023-11-28 08:44:23 26 4
gpt4 key购买 nike

func audioControllerDidFinishLoadingAudioForKey(key: Int) {

print("current line position")
print(scriptTableView.currentLinePosition)
print("key")
print(key)

if scriptTableView.currentLinePosition == key && pausedPlayback == false {

playbackRecordingWithKey(key)

dispatch_async(dispatch_get_main_queue(), { () -> Void in

if self.recordLines == true {
self.setToolbarState(.RecordMode)
} else {
self.setToolbarState(.Playing)
}

})
}
}

我对这个 if 语句有一些非常奇怪的行为。

上述函数始终执行 if block ,即使键是与 currentLinePosition 不同的值(两者都是 Int)。打印输出显示例如:

current line position
25
key
27
playbackRecordingWithKey

但“playbackRecordingWithKey”仍在调用(那里也有打印功能)

有人知道为什么会发生这种情况或如何调试吗?我在这里有点难过。

最佳答案

感谢@HugoTunius 建议将多线程作为问题所在,并感谢其他所有人的意见。

事实证明,将名为“audioControllerDidFinishLoadingAudioForKey”的代码放到主线程上解决了我的问题。我认为 currentLinePosition 值在打印函数和 if 语句之间没有变化,原因有两点:

  • 在测试问题时,我确保行位置永远不会与键的值相同。

  • 调用函数之前花费的时间长短不一(由于不同的数据大小),因此我不太可能每次都在那个确切的时间更改行位置。

也许currentLinePosition的值(where it == key)是在创建线程的时候捕获的什么的,我真的不知道。有趣的是,尽管函数中的行位置值等于键,但 print() 显示了主线程值。如果我发现与此问题相关的多线程处理很重要,我会在下面发表评论。

关于ios - 如果即使 Int 的比较值不相等也正在执行 block (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701999/

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