志愿岩石。 现在我该怎样异步使用它?(KVO rocks. Now how do I use i

2019-08-01 07:48发布

我卖了志愿,但如果在明显的方式使用它是同步的。 我想在我快速连续发射了许多志愿消息的情况下使用它,它是导致作为国际志愿者组织消息的处理我的应用程序停顿下来。 有人建议的方法-也许使用NSOperationNSThread -将在这里工作?

我的目标是保持如果可能的解耦,国际志愿者组织的灵活性。

Answer 1:

退房NSNotification。 这是不完全一样的事情,但你可以激发关闭后台线程的通知(与研究和工作的一点点)。 你可以保持很好的去耦和发射后不管的行为。



Answer 2:

志愿本质上是单线程的,该志愿的通知将在同一个线程中变化对交付。

当然,UIKit中和可可都真的只希望你能diddling在主线程上的UI元素。

因此,如果你正在做异步操作,你是最有可能使用的线程,如果是这样,已经有一个同步的问题,你需要从某个线程的notifs主线程。

而潜藏的关键。 相反,盲目地转发每一个变化的通知,因为它来的,你可以将它们传递到主线程之前合并的更改通知。

有各种各样的手段通过,你可以做到这一点。 具体的解决方案将是相当独特的应用程序,最有可能的。

就个人而言,我会尽量避免细粒度操作的聚结和转发。 我觉得简单得多告诉主线程对象的特定子图已经改变。 更可能的情况是,绘图代码,然后将进行更改可见的用户将需要重新绘制相关的状态,因此,相关的更改会自动反映。

关键的,因为你已经猜到,是节流的通知,这样你就不会陷入瘫痪的应用程序响应能力(或销毁设备的电池寿命)。



Answer 3:

使用接待员模式所推荐的苹果https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/ReceptionistPattern/ReceptionistPattern.html



文章来源: KVO rocks. Now how do I use it asynchronously?