gpt4 book ai didi

ios - 总是预防性地将 UI 更改包装到主线程中?

转载 作者:搜寻专家 更新时间:2023-11-01 06:39:49 25 4
gpt4 key购买 nike

UI 更改应该在主线程上进行。否则,它可能会导致错误行为、警告或崩溃(但有时它仍会按预期工作)。

无论如何,我已经开始在 dispatch_async(dispatch_get_main_queue)) { ... } 中包装几乎所有的 UI 更改。最近我只是想知道这是否是对所有 UI 相关的东西这样做的最佳实践,所以每个 presentViewControllerdismissViewController 等等,因为代码刚刚溢出数百个那些包裹。

当然,有时很明显不需要它;例如当用户点击一个按钮导致一些立即的 UI 更改时。但是有些方法会在不同的上下文中调用,您可能应该通过预防性包装来确保它。最后,我开始在所有地方实现这些,否则你必须非常小心,不要误判或忘记需要的地方。

你的方法是什么?

最佳答案

我认为您应该每次都在主线程上显式调用 UI 更改,但仅在必要时

基本原理:如果您还没有在主线程上,则只需指定主线程。例如,在 UIViewController 子类中,您可以在其中实现 viewDidLoad 方法或 TableView datasource 方法,您可以假设您在主线程已经。因此,将此处的 UI 语句包装到额外的 async block 中是多余的,并且会产生困惑且不必要的冗长代码。

另一方面,如果您在某个后台线程中,您应该明确表示您正在主线程中执行某些操作。这将增加清晰度并增强可读性和可维护性。

关于ios - 总是预防性地将 UI 更改包装到主线程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965744/

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