2010-10-07 5 views
2

J'essaie d'implémenter une catégorie d'une classe existante. Il existe une variable statique dans la classe existante. Si j'essaie d'accéder à la variable statique d'une catégorie, j'obtiens une erreur que la variable statique n'est pas déclarée.Accéder aux variables statiques dans les catégories ObjC

Est-il possible d'accéder aux variables statiques dans les catégories ObjC?

Répondre

3

Pour être clair, Objective-C n'associe pas les variables statiques aux classes. Les variables statiques sont simplement étendues par défaut au fichier dans lequel elles sont déclarées.

Pour rendre une variable statique visible dans d'autres fichiers, ajoutez une déclaration dans le fichier d'en-tête correspondant précédé du mot-clé extern. Ainsi, par exemple, si vous aviez défini la variable statique suivante quelque part dans un de vos fichiers .m

int seconds = 60; 

vous pouvez alors ajouter la déclaration suivante dans le fichier .h:

extern int seconds; 

Ensuite, tout Le fichier .m qui importe ce fichier .h verra la variable statique.

+0

merci, donc je dois sous-classer ou ajouter les méthodes à la classe existante pour mes besoins. – LeonS

+0

Je ne suis pas sûr d'avoir suivi cela. Votre question initiale semblait concerner la visibilité des variables statiques; est-ce que je le fais mal? Vous pouvez également ajouter des méthodes de classe dans une catégorie, si c'est ce que vous demandez. Les méthodes de classe et d'instance, ainsi que les fonctions C, peuvent généralement accéder aux variables statiques tant qu'elles sont dans la portée. Il n'y a vraiment rien de spécial à ce sujet. – jlehr

Questions connexes