gpt4 book ai didi

iOS swift : NSBlockOperation behaves differently on iPhone simulator 6s and 5s

转载 作者:行者123 更新时间:2023-11-29 01:20:35 26 4
gpt4 key购买 nike

我发现在我的应用程序中更新 UI 时看到我的 NSBlockOperation 的不同行为很奇怪。

对于每个 UIButtons(例如 Thumb-up、Thumb-down、Like 等),我将它们链接到它们的操作方法,这类似于下面使用 NSBlockOperation 的方法

按钮为例:

@IBAction func likePost(sender: AnyObject) {
favoriteBtn.enabled = false
let operation = NSBlockOperation { () -> Void in

NetworkUtils.sharedInstance.likePost(self.curPost) { (completed, error) -> Void in
self.favoriteBtn.enabled = true
self.updateUserLabels(completed) // does not get triggered
}
}

operationQueue.addOperation(operation)
}

NetworkUtilsParse 进行 API 调用,为 completed (Bool) 和 error 返回一个闭包(字符串?)。在此 NSBlockOperation 中,我使用 self.updateUserLabels() 方法更新 mainQueue 上的 UI:

func updateUserLabels(completed: Bool) {

if completed {
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
self.likeCount.text = self.curPost.likes;
}
}
}

代码在 iPhone 模拟器 5s 中运行良好,符合预期,但是,在模拟器 6s 或 6s Plus 上,需要更长的时间才能看到 Like 按钮重新启用,甚至在 NetworkUtils.sharedInstance.likeQuestion() 调用返回闭包之前调用 updateUserLabels() 方法。

我想知道为什么不同的 iPhone 模拟器会有这么大的差异,如何让它们像 5s 一样工作?

最佳答案

it takes much longer to see the Like button to be re-enabled

这几乎可以肯定是因为您在执行涉及接口(interface)的操作时忽略了跳出到主线程。因此,您的整个问题可能是线程问题。

关于iOS swift : NSBlockOperation behaves differently on iPhone simulator 6s and 5s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34646109/

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