1

一度に大量の NSNotification オブザーバーをアクティブにした経験がある人はいますか?

オブザーバーのオーバーヘッドはどれくらいですか? 一度に 50 または 100 またはそれ以上のオブザーバーを実行することは合理的ですか?

データベースからメディアのスクロール リストを表示するアプリケーションがあり、個々のメディアをリッスンして適切な UIView に割り当てるスケーラブルな方法として NSNotificationCenter を実装したいと考えています。

乾杯、ダグ

4

2 に答える 2

1

通知がバックグラウンドで処理される場合、通知にはオーバーヘッドがありません。NSNotification を 1 つのスレッドで処理すると、オブザーバーのいずれかがそれを誤って処理し、ブロッキング スレッドにつながる可能性があります。このスレッドがたまたまメインスレッドである場合(あなたの場合はそうです)、アプリはフリーズします。

通知の処理方法によって異なります。通知の送信はオーバーヘッドではなく、他のメソッドと同様に 50 ~ 100 回のメソッド呼び出しです。(私のアプリには 5000 のメソッドがあります)。問題は、それが処理される方法です。各オブザーバーが通知を長時間ブロックすると、何もできなくなります。NSNotification キューの代わりにNSNotification キューを使用することをお勧めします

時間が許せば、Apple の Objects Communication に関する記事を参照することもお勧めします。

于 2012-08-16T21:18:46.517 に答える
0

これについては、J2theCのアドバイスを参考にします。

現在、フリーズを防ぐためにデリゲートメソッドを使用するようにデザインパターンをシフトしています。

フィードバックをお寄せいただきありがとうございます!

于 2012-08-16T21:26:02.300 に答える