簡化...常見的NSNotification錯誤?
建築物有一個公寓對象的數組。每個公寓都有一個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];
有什麼我可以得到根本上的錯誤嗎?現在發生的事情是,公寓正在接收來自任何和所有currentTenants的通知,而不是它自己的。
對不起,實際的代碼有點太難以發佈。只是想知道在觀察來自特定發件人的通知方面是否存在差距?
有趣。如果我可以保證在發佈通知時總是有當前的Tenant? currentTenant頻繁更改,但總是有一個。 – 2010-05-14 00:09:26
通知發佈時,但註冊通知時無關緊要。如果當前租戶爲零,則您將註冊所有可能發送租戶的所有租戶的所有PlumbingIssue通知。基本上,當房客入住時,註冊他的通知;當他搬出去時,將他們從他們身上移開。 – 2010-05-14 02:24:32