A упрощение ...Общие ошибки NSNotification?
Здание имеет массив квартир. В каждой квартире есть один currentTenant. Эти арендаторы имеют тип Person. Обратите внимание, что currentTenant не имеет ссылки на квартиру, поэтому не может отправлять информацию в цепочку.
Когда арендатор имеет вопрос слесарного он поднимает NSNotification:
[nc postNotificationName:@"PlumbingIssue" object:self];
Каждая квартира отслеживающего уведомления только от его собственного текущего арендатора (это устанавливается, когда квартира строится, до того, как текущий арендатор):
[nc addObserver:self selector:@selector(alertBuildingManager:) name:@"PlumbingIssue" object:[self currentTenant];
Когда квартира получает уведомление от его собственной currentTenant, он посылает его собственное уведомление, «PlumberRequired», вместе с номером квартиры и currentTenant в качестве NSDictionary.
Apartment соблюдает эти уведомления, которые он будет принимать от любой квартиры (или другого объекта):
[nc addObserver:self selector:@selector(callPlumber) name:@"PlumberRequired" object:nil];
Есть ли что-то я мог бы получать в корне неправильно здесь? Что происходит, так это то, что квартира получает уведомления от всех и всех нынешних Теневых, а не от своих собственных.
Извините, что фактический код является слишком громоздким для публикации. Было просто интересно, есть ли пробел в моем понимании о наблюдении уведомлений от конкретного отправителя?
Интересно. Что делать, если я могу гарантировать, что всегда будет текущийTenant, когда уведомление будет опубликовано? currentTenant часто меняется, но всегда есть одно. –
Не имеет значения, когда уведомление отправлено, но когда вы регистрируетесь для уведомления. Если текущий арендатор равен нулю, вы регистрируетесь для всех уведомлений PlumbingIssue от всех арендаторов, которые могут его отправить. В основном, когда арендатор переходит, зарегистрируйтесь для его уведомлений; когда он уходит, удалите себя от них. –