一度に大量の NSNotification オブザーバーをアクティブにした経験がある人はいますか?
オブザーバーのオーバーヘッドはどれくらいですか? 一度に 50 または 100 またはそれ以上のオブザーバーを実行することは合理的ですか?
データベースからメディアのスクロール リストを表示するアプリケーションがあり、個々のメディアをリッスンして適切な UIView に割り当てるスケーラブルな方法として NSNotificationCenter を実装したいと考えています。
乾杯、ダグ
一度に大量の NSNotification オブザーバーをアクティブにした経験がある人はいますか?
オブザーバーのオーバーヘッドはどれくらいですか? 一度に 50 または 100 またはそれ以上のオブザーバーを実行することは合理的ですか?
データベースからメディアのスクロール リストを表示するアプリケーションがあり、個々のメディアをリッスンして適切な UIView に割り当てるスケーラブルな方法として NSNotificationCenter を実装したいと考えています。
乾杯、ダグ
通知がバックグラウンドで処理される場合、通知にはオーバーヘッドがありません。NSNotification を 1 つのスレッドで処理すると、オブザーバーのいずれかがそれを誤って処理し、ブロッキング スレッドにつながる可能性があります。このスレッドがたまたまメインスレッドである場合(あなたの場合はそうです)、アプリはフリーズします。
通知の処理方法によって異なります。通知の送信はオーバーヘッドではなく、他のメソッドと同様に 50 ~ 100 回のメソッド呼び出しです。(私のアプリには 5000 のメソッドがあります)。問題は、それが処理される方法です。各オブザーバーが通知を長時間ブロックすると、何もできなくなります。NSNotification キューの代わりにNSNotification キューを使用することをお勧めします
これについては、J2theCのアドバイスを参考にします。
現在、フリーズを防ぐためにデリゲートメソッドを使用するようにデザインパターンをシフトしています。
フィードバックをお寄せいただきありがとうございます!