単純化...
建物にはアパート オブジェクトの配列があります。各アパートメントには単一の currentTenant があります。これらのテナントのタイプは Person です。currentTenant にはアパートメントへの参照がないため、情報をチェーンに戻すことができないことに注意してください。
テナントに配管の問題がある場合、テナントは NSNotification を発生させます。
[nc postNotificationName:@"PlumbingIssue" object:self];
各アパートメントは、それ自体の現在のテナントからのみ通知を監視します (これは、現在のテナントが存在する前に、アパートメントが構築されたときに設定されます)。
[nc addObserver:self selector:@selector(alertBuildingManager:) name:@"PlumbingIssue" object:[self currentTenant];
アパートメントは、自身の currentTenant から通知を受け取ると、自身の通知「PlumberRequired」をアパートメント番号と NSDictionary の currentTenant と共に送信します。
アパートメントは、任意のアパートメント (またはその他のオブジェクト) から受け取る次の通知を観察します。
[nc addObserver:self selector:@selector(callPlumber) name:@"PlumberRequired" object:nil];
ここで根本的に間違っている可能性があるものはありますか? 何が起こっているかというと、アパートは自分自身ではなく、すべての現在のテナントから通知を受け取っています。
申し訳ありませんが、実際のコードは投稿するには少し扱いにくいものです。特定の送信者からの通知を監視することについて、私の理解にギャップがあるかどうか疑問に思っていましたか?