NSNotification очень хорошо работает для объектов, которые вы хотите свободно связать. В контексте Cocoa / iPhone это означает, что между ними нет ссылок, в основном.
В контроллере, который может получить сообщение:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(doTheThing:) name: @"MessageBetweenControllers" object: nil];
В контроллере, которому необходимо отправить сообщение:
NSDictionary *dict = [NSDictionary dictionaryWithObject: <some object> forKey: @"key"];
[[NSNotificationCenter defaultCenter] postNotificationName: @"MessageBetweenControllers" object: self userInfo: dict];
Приведенный выше пример является просто шаблоном (например, бит NSDictionary является необязательным), но он показывает механизм. Прочтите документацию по NSNotification и NSNotificationCenter, чтобы получить подробную информацию.
Это не чисто теоретическое. Это основной метод, который я использую для связи между объектами в трех моих опубликованных приложениях, а также в новом. Накладные расходы на уведомления в миниатюре.
Две ошибки: убедитесь, что вы добавляете addObserver только один раз для каждого сообщения - NSNotificationCenter не отбирает дубликаты; если вы вставите одного и того же наблюдателя дважды, он получит сообщение дважды. Кроме того, убедитесь, что вы делаете removeObserver в своем методе dealloc (снова, см. Docs.)