Depuis que j'ai commencé à travailler sur les applications iOS et l'objectif C, j'ai été vraiment intrigué par les différents endroits où l'on pouvait déclarer et définir des variables. D'une part, nous avons l'approche traditionnelle C, d'autre part, nous avons les nouvelles directives ObjectiveC qui ajoutent OO en plus de cela. Pourriez-vous m'aider à comprendre les meilleures pratiques et les situations dans lesquelles je voudrais utiliser ces emplacements pour mes variables et peut-être corriger ma compréhension actuelle?
Voici un exemple de classe (.h et .m):
#import <Foundation/Foundation.h>
// 1) What do I declare here?
@interface SampleClass : NSObject
{
// 2) ivar declarations
// Pretty much never used?
}
// 3) class-specific method / property declarations
@end
et
#import "SampleClass.h"
// 4) what goes here?
@interface SampleClass()
// 5) private interface, can define private methods and properties here
@end
@implementation SampleClass
{
// 6) define ivars
}
// 7) define methods and synthesize properties from both public and private
// interfaces
@end
- Ma compréhension de 1 et 4 est que ce sont des déclarations et des définitions basées sur des fichiers de style C qui n'ont aucune compréhension du concept de classe, et doivent donc être utilisées exactement comme elles seraient utilisées en C. Je les ai vues utilisé auparavant pour implémenter des singletons statiques basés sur des variables. Y a-t-il d'autres utilisations pratiques qui me manquent?
- Mon expérience avec iOS est que les ivars ont été presque complètement supprimés en dehors de la directive @synthesize et peuvent donc être ignorés. Est-ce le cas?
- Concernant 5: pourquoi voudrais-je déclarer des méthodes dans des interfaces privées? Mes méthodes de classe privée semblent bien compiler sans déclaration dans l'interface. Est-ce principalement pour la lisibilité?
Merci beaucoup, les amis!