2010-08-28 9 views
2

J'essaie de confirmer si l'initialisation de variables statiques dans Objective-C fonctionne de la même manière que pour C++. Plus précisément, les variables statiques ont-elles la possibilité d'être instanciées/créées avant l'appel de main()?Ordre d'initialisation des variables statiques

Répondre

3

Il n'y a pas de concept d'instanciation de variables statiques dans Objective-C proper. par exemple.

// file level 
NSMutableArray* foo = [[NSMutableArray alloc] init]; 

n'est pas autorisé. C'est la même chose que dans C: vous ne pouvez initialiser que des variables statiques avec des constantes. Pour les objets Objective-C, cela signifie nil ou les chaînes littérales.

En Objective-C++, vous pouvez le faire et ils sont appelés avant main(). Il suit juste la partie C++ des règles d'Objective-C++. Lorsque vous voulez initialiser des objets associés à une classe en Objective-C, vous utilisez +initialize ou +load. Voir ceci nice blog article.

Questions connexes