J'ai un projet qui utilise le framework Core Telephony. Récemment mon code a cessé de travailler sur une catégorie CTCarrier
, l'éditeur de liens se plaint qu'il ne peut pas trouver la classe CTCarrier
:Le lieur ne trouve pas de classe qui devrait être disponible
Undefined symbols:
"_OBJC_CLASS_$_CTCarrier", referenced from:
l_OBJC_$_CATEGORY_CTCarrier_$_Foo in CTTests.o
ld: symbol(s) not found
Ceci est un exemple de code qui déclenche l'erreur ci-dessus:
#import <CoreTelephony/CTCarrier.h>
@interface CTCarrier (Foo)
- (void) doFoo;
@end
@implementation CTCarrier (Foo)
- (void) doFoo {}
@end
Si je changer la catégorie à l'extension de classe, le code se construit soudainement:
#import <CoreTelephony/CTCarrier.h>
@interface CTCarrier()
- (void) doFoo;
@end
@implementation CTCarrier
- (void) doFoo {}
@end
Que se passe-t-il? Exemple de code on GitHub.
Je sais comment les catégories de travail, à moins je l'espère :) Le problème est que l'éditeur de liens se plaint qu'il ne peut pas trouver une classe à laquelle j'ajoute une catégorie. Lorsque je passe à une extension de classe au lieu de la catégorie, l'éditeur de liens arrête de se plaindre. C'est bizarre. – zoul
La classe est implémentée dans un autre fichier .m? Je fais référence à '@implementation CTCarrier' –
La classe 'CTCarrier' vient du framework Core Telephony. – zoul