2012-08-16 73 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.