Les NSNotification fonctionnent très bien pour les objets que vous souhaitez coupler de manière souple. Dans un contexte Cocoa/iPhone, cela signifie qu'il n'y a pas de références entre eux, la plupart du temps.
Dans le contrôleur qui peut recevoir le message :
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(doTheThing:) name: @"MessageBetweenControllers" object: nil];
Dans le contrôleur qui doit envoyer le message :
NSDictionary *dict = [NSDictionary dictionaryWithObject: <some object> forKey: @"key"];
[[NSNotificationCenter defaultCenter] postNotificationName: @"MessageBetweenControllers" object: self userInfo: dict];
L'exemple ci-dessus n'est qu'un modèle (par exemple, le bit NSDictionary est facultatif), mais il montre le mécanisme. Lisez la documentation sur NSNotification et NSNotificationCenter pour obtenir les détails.
Ce n'est pas purement théorique. C'est la principale méthode que j'utilise pour la communication inter-objets dans mes trois applications publiées et dans ma nouvelle application. L'overhead pour les notifications est minuscule.
Deux problèmes : Assurez-vous que vous n'ajoutez un observateur qu'une seule fois par message - le NSNotificationCenter n'élimine pas les doublons ; si vous insérez le même observateur deux fois, il recevra le message deux fois. De même, assurez-vous que vous faites removeObserver dans votre méthode dealloc (encore une fois, consultez la documentation).