gpt4 book ai didi

cocoa-touch - 从 NSOperation 使用 `performSelectorOnMainThread:withObject:waitUntilDone:` 有多重要?

转载 作者:可可西里 更新时间:2023-11-01 05:03:35 25 4
gpt4 key购买 nike

我的 iPad 应用程序与 XML 提要同步,在从 NSOperationQueue 执行的 NSOperation 子类中运行同步。当它解析提要时,它会通过 performSelectorOnMainThread:withObject:waitUntilDone: 回调到主线程,以更新 UI 的各个部分、安排下载等。其中一些非常昂贵;随着同步的进行,用户界面有时会停止响应一两秒钟。

为了使 UI 更具响应性,我删除了 performSelectorOnMainThread:withObject:waitUntilDone: 的使用,转而使用直接调用来执行所有与同步相关的任务,包括更新 UI。所以现在同步完全发生在 NSOperationQueue 创建的后台线程上。这似乎工作得很好,并且 UI 在同步期间响应更快。

但是,我对以这种方式发布它持怀疑态度。我在不同的地方看到一些提到应该只更新主线程上的 UI ( example with reference to AppKit )。但我一直无法在文档中找到关于此主题的任何具体信息。

那么在主线程上更新 UI 有多重要呢?应用程序的哪些部分是线程安全的,哪些不是?是否有引用解释在 NSOperation 中执行什么是安全的,什么应该只在 iOS 的主线程上执行?我真的在做不安全或容易发生碰撞的事情吗?

最佳答案

始终在主线程上更新 UI 非常重要。从后台线程访问 UI 可能会导致各种问题,包括内部状态损坏、崩溃或只是简单的不正确行为。任何不需要接触 UI 的工作都应该在后台线程上进行,但更新 UI 的代码肯定需要在主线程上进行。

关于cocoa-touch - 从 NSOperation 使用 `performSelectorOnMainThread:withObject:waitUntilDone:` 有多重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751499/

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