2010-09-06 7 views

Répondre

2

De manière générale, le meilleur moyen pour un contrôleur de vue de communiquer avec sa classe de modèle est d'initialiser le contrôleur de vue avec la classe de modèle. Par exemple:

- (id)initWithModel:(MYModel *)aModel { 
    self = [super initWithNibName:@"ModelViewController" bundle:nil]; 
    if (self != nil) { 
     self.model = aModel; 
    } 
    return self; 
} 

Il existe d'autres approches pour des cas particuliers, mais c'est la meilleure approche par défaut.

+0

bon seigneur. c'était si évident. merci =) – gurghet

0

Quelle que soit créé l'objet contrôleur de vue (s) et l'objet modèle nécessaire peut les relier. Par exemple, un contrôleur racine peut initialiser le modèle, puis les contrôleurs de vue qui ont besoin du modèle, puis utiliser une propriété des contrôleurs de vue pour fournir l'accès au modèle.

Souvent, ce contrôleur de niveau racine est le délégué de l'application ou le contrôleur de vue lui-même. Si vous souhaitez simplement raccourcir la chaîne d'accès du délégué de l'application en tant qu'optimisation de l'espace/temps, vous pouvez conserver/mettre en cache le modèle singleton après avoir suivi la chaîne normale pour y accéder.

Questions connexes