Étant donné la section d'une application qui a un UINavigationController et 2 niveaux de UITableViews (ie une ligne est sélectionnée sur le contrôleur racine qui pousse le second contrôleur sur la pile de navigation) J'ai les questions suivantes:Communication entre view controllers
1) Il y a un objet Utilisateur requis par les deux contrôleurs. Quel est le meilleur moyen de communiquer entre les deux contrôleurs? J'ai vu un post sur ce site qui mentionne injection de dépendance et que le contrôleur racine pourrait passer l'objet utilisateur au second contrôleur de niveau par:
@implementation SecondLevelViewController
-(void) initWithUser: (User *) user {
// myUser is an instance variable
myUser = user;
[myUser retain];
}
Dans cet exemple le deuxième contrôleur semble retenir l'utilisateur alors que j'ai vu d'autres sources (par exemple le cours de développement de l'iPhone de Stanford) qui préconisent que l'utilisateur soit simplement affecté, et non retenu, dans cette situation (couplage lâche).
J'ai également vu des arguments pour une forme de délégation où un objet id assigné serait utilisé sur le second contrôleur (plutôt qu'une variable d'instance User conservée comme ci-dessus).
Ce serait génial si quelqu'un pouvait clarifier cette position pour moi car je suis extrêmement confus par les conseils apparemment contradictoires dans ce domaine. Quel est le meilleur moyen de communication entre les contrôleurs de vue?
2) Ma deuxième question concerne également la structuration des contrôleurs. J'ai vu des exemples où le contrôleur de racine (dans l'arrangement ci-dessus) a un tableau de contrôleurs de second niveau instanciés. Est-ce normal dans une application professionnelle ou y aurait-il un impact significatif sur la mémoire pour faire les choses de cette façon (c'est-à-dire sans chargement paresseux)? Je suppose que l'avantage de la matrice est une réduction des temps de chargement pour les contrôleurs de second niveau?
Merci pour toutes les réponses que j'essaie de développer les choses correctement plutôt que de les bidouiller ensemble.
Merci pour vos réponses Ole et moi prenons note de votre commentaire concernant un article par question. Cependant, j'étais curieux de savoir si l'approche de la matrice (mentionnée dans ma deuxième question) a des avantages en termes de vitesse de chargement ou est-ce simplement un moyen utile de structurer votre code? – Urizen
Instancier un objet contrôleur de vue ne devrait pas prendre beaucoup de temps, donc je dirais que les avantages de la vitesse de chargement sont insignifiants. Ce qui prend du temps est le chargement de la vue, mais l'approche du tableau ne change pas le fait que le contrôleur de vue chargera la vue de toute façon. –
Merci encore. Des réponses très utiles – Urizen