したがって、initでNSNotificationServiceにオブザーバーとして自分自身を追加し、deallocでNSNotificationCenterから自分自身を削除するクラスがあります。
すべてがうまく機能します。通知を投稿して、正しいオブジェクトで一度受信します。
次に、ループを実行して3つのビューを追加しました。各ビューは一度initと呼ばれ、すべてのビューがオブザーバーとして追加されました。
これで、通知を投稿すると、各ビューが3回通知を受け取ります。(合計9)
そこで、addオブザーバーを別のメソッドに移動し、2つのビュー(これら3つから)でのみ呼び出しました。
これで、各ビューが2回呼び出されました(3回のビューが2回呼び出され、合計6回)が、3番目のインスタンスはオブザーバーとして追加されていません(メホトを監視し、期待どおりに呼び出されませんでした)。
ここで、ループを削除して3つのビューを作成しました。そして、オブザーバーとして1つだけ追加しました。3つすべてが呼び出されました...
これは既知の問題ですか、それとも何か新しいものを見つけましたか?
XCode 4.6 iOS 6.1
アップデート - - - - - - - -
問題は、私のビューが実際には1つのインスタンスにすぎないことです。
このコードは、すべて同じ1つのビューである3つのビューを生成します。
CustomViewController * hw1 = [[CustomViewController alloc] init];
[hw1 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 0 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw1.view];
CustomViewController * hw2 = [[CustomViewController alloc] init];
[hw2 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 1 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw2.view];
CustomViewController * hw3 = [[CustomViewController alloc] init];
[hw3 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 2 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw3.view];
hw1のコンテンツを変更すると、hw2とhw3のコンテンツが変更されます。
SetupWithFrameは、定義されたフレームのサブビューを割り当てて追加する単なるメソッドです。