Je construis une application arithmétique & dans laquelle il y a des sous-classes de NSObject
pour les nombres et les chiffres.Parmi ceux-ci ont des objets de vue correspondants qui prennent une source de données (un nombre ou un chiffre) et un délégué , le contrôleur de vue.voir comme propriété de l'objet modèle alternative
J'ai trouvé qu'il est utile d'obtenir les vues & le modèle à travailler ensemble pour définir les vues numériques comme une propriété de leurs chiffres correspondants.
Par exemple, la classe Number a une propriété NSMutableArray
qui détient ses chiffres.
Si je veux trouver la taille pour la NumberView correspondante, je vous écris pouvez écrire du code comme celui-ci dans le contrôleur:
-(void) updateNumberViewFrameSize:(ACNumberView*) sender
{
NSUInteger i;
float width = 0, height = 0;
for (ACDigit* digit in [sender.dataSource returnNumberViewDataSource].digitArray)
{
width += digit.digitView.size.width;
height += digit.digitView.size.width;
}
sender.frame = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, width, height);
}
Le code fonctionne très bien, mais je pense que ce n'est pas une bonne pratique de maintenez ce pointeur sur la vue du modèle, même si le modèle ne l'utilise pas lui-même.
Si elle est mauvaise pratique, quels sont les pièges potentiels, et est-il une meilleure façon d'atteindre cet objectif de type?
Un bon exemple de pourquoi c'est faux. Une vue peut-elle accéder à ses sous-vues? – chartman
@chartman Oui, avec [afficher sous-vues]. –
Vous avez raison, il est préférable de simplement calculer la taille de la vue pour le nombre en fonction de ce qu'elle doit conserver plutôt que d'obtenir les données des vues – chartman