これは、時間を節約するために他の人に警告するほどの質問ではありません。
iOS 3 / iPhone OS 3のNSNotificationCenter(Mac OSXおよびiOS4も想定しています)の動作は次のとおりです。
正確な特定の通知を複数回登録すると、NSNotificationCenterは冗長性を認識せず、代わりに、監視を登録した数の通知を送信します。
これは、ほとんどの場合、見たい動作ではなく、ほとんどの場合、偶発的なものです。
例:
新しいデータが着信したときに、ViewControllerがシングルトンネットワークオブジェクトから通知を受信するようにしたい。
- (void) viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
しかし、以前はすでに同じものを入れていましたviewWillAppear
:
- (void) viewWillAppear
{
[super viewWillAppear];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(newDataArrived:)
name:NewDataArrivedNotification
object:[NetworkListener sharedNetworkListener]];
}
これはまったく同じ通知であり、同じオブザーバー、送信者、および通知名に解決されることに注意してください。
この場合、これらのaddObserver呼び出しのいずれかを削除しないと、ViewControllerに重複した通知が届きます。
マルチスレッド環境では、これは傷ついた世界です。私を信じて。
このようなことに遭遇した他の人がいる場合に備えて、これをそこに置くだけです。