Objective-C ne permet pas de déclarer une donnée membre statique dans une classe via l’utilisation du mot-clé static, comme en Java par exemple. En fait, il suffit de déclarer une variable statique dans la section @implementation
de la classe :
@implementation MyClass // Déclaration d'une donnée membre STATIQUE static NSDictionary* cacheMap; ... @end |
Pour initialiser cette variable, notamment s’il s’agit d’un objet, il suffit d’implémenter la méthode statique initialize de la classe concernée et d’y initialiser la donnée statique :
+ (void) initialize { cacheMap = [NSDisctionary dictionary]; } |
Toutes les méthodes statiques de votre classe peuvent utiliser cette donnée statique : Cocoa se charge d’envoyer le message initialize à votre classe avant tout autre appel.
Attention : cette donnée statique ne sera pas visible dans les classes qui étendent votre classe.
Je viens de corriger l’article : il est préférable de déclarer la variable statique directement dans la section @implementation de la classe concernée (sinon Xcode génère des avertissements).