Dans certaines de mes connaissances, j'ai vu quelqu'un mentionner que dans votre contrôleur de vue, vous pouvez avoir un modèle et avoir une sorte d'auditeur sur le modèle pour y apporter des modifications. Je ne pense pas que j'utilise les bons noms pour ces noms, ce qui explique probablement pourquoi mes recherches n'ont rien révélé. En gros, je veux transférer les appels de mon serveur depuis les contrôleurs vers mes modèles, mais j'ai besoin d'une sorte d'écouteur pour savoir quand l'appel est terminé et mettre à jour mes vues.
regard sur les délégués tutoriel délégués
ou des blocs un peu plus avancés tutoriel de blocs de base
commencez simplement par les délégués,
vous pouvez également utiliser NSNotification Tutoriel NSNotification mais n'est pas recommandé car il est diffusé à toutes les classes et vous n'aurez peut-être pas besoin d'envoyer des messages à une classe spécifique.
Appartenant au monde C #, je dois aller à Objective C (pour mon travail). Je pense que l’événement équivalent dans l’objectif C est cette implémentation:
Créez un protocole avec toutes les méthodes de votre événement:
@protocol MyDelegate <NSObject>
- (void)myEvent;
@end
Dans votre classe qui doit envoyer l'événement, ajoutez:
@interface MyClassWichSendEvent : NSObject
@property (nonatomic, retain) IBOutlet id<MyDelegate> delegate;
@end
Relever l'événement où vous le souhaitez, par exemple:
- (IBAction)testEvent:(NSButton*)sender
{
[self.delegate myEvent];
}
Maintenant, dans votre classe d'auditeur, vous devriez écouter les événements comme ceci:
Ajoutez le protocole à votre classe qui écoute
@interface Document : NSDocument<MyDelegate>
Dans l'implémentation, sur init ou dans le générateur d'interface, vous devez lier le délégué de votre instance d'objet pour l'écouter avec le self de votre classe qui écoute.
Dans du code
-(void)awakeFromNib
{
myObjToListen.delegate = self;
}
Et enfin, implémentez votre méthode dans votre classe d'auditeur:
- (void)myEvent
{
NSLog(@"i have listen this event !");
}
Désolé pour mon anglais, j'espère que cela aidera les gens qui sont passés de Java ou C #.
Vous recherchez KVO - clé/valeur d'observation:
http://nachbaur.com/2011/07/29/back-to-basics-using-kvo/
Les délégués + les notifications sont utiles pour la communication entre les objets, mais ils n'envoient pas automatiquement les msgs lorsqu'une valeur change (ce qui correspond à votre question, d'après votre question)
Je pense que vous recherchez peut-être NSNotificationCenter, un moyen de transmettre des messages à quiconque peut écouter. Ainsi, vous pouvez envoyer une notification à partir d'un événement de votre modèle et l'écouter dans vos contrôleurs. Une méthode plus propre pourrait consister à implémenter votre propre protocole avec des délégués.
Objective C utilise délégués
Cet article a un bel exemple: Comment créer des délégués dans Objective-C?