J'écris du code Objective-C et j'ai fréquemment rencontré la situation où je dois utiliser une variable de classe pour stocker une valeur pour une utilisation unique. Après l'avoir consommé, je n'en ai plus besoin. Pour moi, stocker cette valeur dans une variable de classe ressemble à l'odeur du code. Vraiment, la valeur devrait être transmise en tant que paramètre aux méthodes que j'utilise. Je rencontre cette habitude quand je consomme des délégués. À titre d'exemple, j'ai une interface utilisateur avec plusieurs boutons utilisés pour charger et afficher un UIActionSheet
quand ils sont engagés. Cette feuille d'action contient un sélecteur de date qui définit une valeur pour UILabel
lorsque la feuille d'action est fermée. Comme vous pouvez le voir iciComment supprimer les variables de classe à usage unique du code Objective-C?
- (IBAction)setPurchaseDateTapped {
self.activeField = purchaseDate;
[self loadDatePickerActionSheet:@"Edit Purchase Date"];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
self.activeField.text = value_from_UIActionSheet;
}
, le rappel actionSheet clickedButtonAtIndex ne me permet pas de passer le activeField
donc je dois utiliser une variable de classe. Il semble plus correct d'écrire ceci:
- (void)actionSheet:(UIActionSheet *)actionSheet parameterValue:(id)parameter {
parameter.text = value_from_UIActionSheet;
}
Je crois que je peux le sous-classe UIActionSheet et UIActionSheet délégué et ajouter les signatures que j'ai besoin, mais encore une fois cela semble plus d'effort que cela vaut la peine (?). Donc, ma question est quelle est la meilleure façon de faire ce que je suis en train de faire? Je ne veux pas nécessairement changer l'interface de sélecteur de date/feuille d'action que j'ai créée (bien que s'il y ait un meilleur modèle pour placer plusieurs dates sur un UIView tout en gardant le DatePicker à l'écart, je '' . m toutes les oreilles)
Je n'étais pas au courant de la propriété tags. Je vais devoir regarder ça. –