gpt4 book ai didi

iphone - KVO 很震撼。现在我该如何异步使用它?

转载 作者:行者123 更新时间:2023-12-03 19:03:56 26 4
gpt4 key购买 nike

我对 KVO 很感兴趣,但如果以明显的方式使用它是同步的。我想在以下情况下使用它:我快速连续地发出许多 KVO 消息,并且它导致我的应用程序在处理 KVO 消息时逐渐停止。有人可以建议一种方法 - 也许使用 NSOperationNSThread - 在这里可行吗?

我的目标是尽可能保留 KVO 的解耦性和灵 active 。

最佳答案

KVO 本质上是单线程的,因为 KVO 通知将在与更改相同的线程上传递。

当然,UIKit 和 Cocoa 都只希望您在主线程上欺骗 UI 元素。

因此,如果您正在进行异步操作,则很可能使用线程,如果是这样,则已经存在同步问题,因为您需要将通知从某个线程获取到主线程。

这就是关键。您可以在将更改通知传递到主线程之前合并这些更改通知,而不是盲目地转发每个更改通知。

您可以通过多种方式来执行此操作。特定的解决方案很可能对于您的应用程序来说是非常独特的。

就我个人而言,我尽量避免细粒度操作的合并和转发。我发现告诉主线程对象的特定子图已更改要简单得多。更有可能的是,使更改对用户可见的绘制代码将需要重新绘制相关状态,因此,相关更改将自动反射(reflect)。

正如您所猜测的,关键是限制通知,这样您就不会降低应用程序的响应速度(或破坏设备的电池生命周期)。

关于iphone - KVO 很震撼。现在我该如何异步使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282709/

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