La coutume de lecture & Poseur de iOS 5

Je veux remplacer les getter et setter dans mon ObjC classe à l'aide de l'ARC.

.h Fichier

@property (retain, nonatomic) Season *season;

.m Fichier

@synthesize season;


- (void)setSeason:(Season *)s {
    self.season = s; 

    //do some more stuff
}

- (Season *)season {
    return self.season;
}

Suis-je manqué quelque chose?

  • Noter que ce modèle conduit à la folie; en particulier, cela signifie que setSeason: doit toujours être atomique, partie intégrante de l'opération sur votre modèle de données. Si votre code à évoluer de sorte qu'il y a une autre propriété dont la valeur est dépendante de season, alors vous êtes de gauche avec une commande de dépendance ("je dois définir" l'autre "avant que j'appelle setSeason: parce que setSeason: a une logique d'entreprise qui dépend des "autres"). Mieux pour garder setter/getter stupide simple et de garder la logique d'entreprise distincts.
  • Eh bien dans mon cas, je vais juste mettre à jour la vue avec les nouvelles données de la season...
  • Mais si vous gardez le setter/getter stupide simple et de garder la logique d'affaires distincte vous avez juste déplacé le problème. Là, vous devez vous rappeler que chaque fois que vous appelez setSeason: vous devez également appeler someBusinessLogicBasedOnSeason: et vous avez encore à me demander si vous avez besoin de faire tout cela avant ou après vous définissez les autres.
  • Un bon modèle est à l'aide de setter pour invalider les données, par exemple, il y a deux setters setSeason:, setYear: et ils ont tous deux faire _seasonalDataNeedsUpdate = YES;. Mise à jour réelle qui se produit plus tard, si nécessaire (par exemple, si l'utilisateur n'a pas l'annuler). Cela prend en charge de la commande et nous permet de ne pas tirer les mêmes informations plusieurs fois.
  • Oh mon dieu, ilya, je vous remercie beaucoup! J'ai été littéralement arraché mes cheveux en se demandant pourquoi l' _ notation parfois travailler et n'a parfois pas.
InformationsquelleAutor alex | 2012-01-04