J'ai une classe d'une bibliothèque externe que je veux étendre avec une catégorie. Toutefois, cette classe utilise plusieurs variables statiques telles que:Objective-C Catégorie avec pointeurs statiques: comment éviter une erreur de symboles non définis?
static SomeClass* someClass;
La méthode de catégorie J'extension doit faire un appel à cette classe, comme dans
-(void) categoryMethod
{
[someClass someMethod];
}
Si je fais que le compilateur se plaignent:
'someClass' was not declared in this scope
Je pensais que je dois probablement déclarer la SomeClass statique extern:
extern SomeClass* someClass;
Cependant, cela conduit à l'erreur de liaison suivant:
"_someClass", referenced from:
_someClass$non_lazy_ptr in UsingSomeClass.o
(maybe you meant: _someClass$non_lazy_ptr)
Symbol(s) not found
Je pense que je manque quelque chose de simple et stupide. Je peux très bien utiliser la bibliothèque statique. Je devine que les variables statiques sont locales à la classe que je veux étendre, est-il possible de dire à l'éditeur de liens que ce sont les variables statiques que je veux utiliser?
Ou est-ce simplement impossible d'étendre une classe Objective-C qui utilise des variables statiques (respectivement où ma catégorie doit utiliser ces variables statiques)? Post-scriptum: puisque je lie la bibliothèque statique qui contient la classe que je veux étendre, j'ai fait face au problème qui doit être résolu avec les autres indicateurs de liens -ObjC et -all_load. Mais j'ai été passé, ce n'est pas le problème, je peux écrire des catégories pour d'autres classes dans cette bibliothèque statique.
Je m'inquiétais que les variables statiques soient locales et ne puissent pas être utilisées. Zut. Merci quand même. – LearnCocos2D