2012-08-16 75 views
1

只是想知道,有没有人有经验激活大量的NSNotification观察员在同一时间?NSNotification观察员开销

观察者的开销是多少?一次运行50或100个或更多观察者是合理的吗?

我有一个显示的从数据库媒体滚动列表中的应用程序,我想实现NSNotificationCenter作为倾听的媒体各个部分,并将它们分配到适当的UIViews

干杯, 道格

的可扩展的方法
+2

您是从多个地方观察销售对象还是仅发布大量通知?此外,您应该重新考虑您的班级设计以遵循其他模式。不得不严重依赖NSNotificationCenter是一个迹象。 – J2theC 2012-08-16 18:27:26

回答

0

我要去承担这个J2theC的建议..

我目前换挡设计模式使用委托方法,以防止任何冻结。

感谢您的反馈!

+0

重塑周期的重点是什么..苹果公司也做了同样的事情。 Apple出于同样的原因向您提供了代表团模式和通知。 – 2012-08-16 21:34:07

1

如果通知在后台处理,则不会有开销。如果你在一个单线程中处理NSNotification,那么任何一个观察者都会错误地处理它,这将导致阻塞线程。如果这个线程碰巧是主线程(就你的情况而言),那么应用程序将冻结。

这取决于处理通知的方式。发送通知不是一个开销,它们只是50 -100个方法调用,就像任何其他方法一样。 (我的应用程序中有5000个方法)。问题的关键在于它的处理方式。如果每个观察者长时间阻止通知,则不能做任何事情。我会建议使用NSNotification队列,而不是NSNotification Queue

如果时间允许,我还建议参考reading article on Objects Communication by apple.