我在一个单独的应用程序中编写了一些示例代码,它基本上将NSMutableArray中的项目排队。然后我有一个方法循环遍历该数组并创建一个NSInvocationOperation,将它放在NSOperationQueue中,释放操作等等。然后调用该方法(只是打印出存储在数组中并传递给操作的字符串),它是否正常工作,并将NSNotification发送回ViewController。观察者方法被击中,但操作有滞后。例如,观察者方法只是更新UILabel,其中有多少消息留在队列中。它最终会这样做,但是所有NSOperations完成和UI更新之间似乎有五秒钟的滞后。对我而言,似乎NSOperationQueue阻止了主线程。有没有让UI立即响应通知?
一个重要的注意事项是我还没有在手机上测试过这个,只是模拟器。我不确定这是否有所作为。
提前抱歉。我离开了电脑,而且我没有在我面前的代码。希望我解释得很好。此外,我已经阅读了文档,只是没有找到任何真正回答这个特定问题的东西。
答案 0 :(得分:1)
延迟是在除main之外的线程上执行的UI更新的典型情况。
要立即在UILabel
上查看您的更新,请务必调用更新标签text
的任何方法,如下所示:
[self performSelectorOnMainThread:@(myMethodToUpdateLabelWithText:) withObject:text waitUntilDone:NO];
其中myMethodToUpdateLabelWithText
是类中设置标签文本值的方法。