J'essaie de réutiliser un groupe de clases Obj-C entre des applications iPhone. Les valeurs qui diffèrent d'une application à l'autre ont été isolées et j'essaie de déterminer la meilleure façon d'appliquer ces valeurs personnalisées aux classes, d'une application à l'autre.Classes Obj-C réutilisables avec des valeurs personnalisées: la bonne façon
Devrais-je les tenir dans le code?
// I might have 10 customizable values for each class, that's a long signature!
CarController *controller = [[CarController alloc] initWithFontName:@"Vroom" engine:@"Diesel" color:@"Red" number:11];
Devrais-je les stocker dans un grand settings.plist
?
// Wasteful! I sometimes only use 2-3 of 50 settings!
AllMyAppSettings *settings = [[AllMyAppSettings alloc] initFromDisk:@"settings.plist"];
CarController *controller = [[CarController alloc] initWithSettings:settings];
[settings release];
Dois-je avoir peu, en option n_settings.plist
s pour chaque classe?
// Sometimes I customize
CarControllerSettings *carSettings = [[CarControllerSettings alloc] initFromDisk:@"car_settings.plist"];
CarController *controller = [[CarController alloc] initWithSettings:carSettings];
[carSettings release];
// Sometimes I don't, and CarController falls back to internally stored, reasonable defaults.
CarController *controller = [[CarController alloc] initWithSettings:nil];
Ou y at-il une solution OO à laquelle je ne pense pas du tout qui serait mieux?
J'accepte cette réponse en raison de la liste détaillée des avantages ici. Il y avait très peu de vote pour me guider - donc je ne sais vraiment pas si c'était la «meilleure» réponse ou pas ... peut-être que je devais donner plus de contexte à ma question? Merci aux autres réponses aussi - j'ai beaucoup appris d'eux. En outre, les trois réponses semblent suggérer l'utilisation d'un protocole (délégué ou source de données). – Prairiedogg