私はコアテレフォニーフレームワークを使用するプロジェクトを持っています。最近、私のコードはCTCarrier
カテゴリに動作を停止し、リンカはそれがCTCarrier
クラスを見つけることができないことを不平を言う:私場合リンカはそこにあるクラスを見つけることができません
#import <CoreTelephony/CTCarrier.h>
@interface CTCarrier (Foo)
- (void) doFoo;
@end
@implementation CTCarrier (Foo)
- (void) doFoo {}
@end
:
Undefined symbols:
"_OBJC_CLASS_$_CTCarrier", referenced from:
l_OBJC_$_CATEGORY_CTCarrier_$_Foo in CTTests.o
ld: symbol(s) not found
これは、上記のエラーをトリガーするサンプルコードですカテゴリをクラス拡張に変更すると、コードは突然作成されます:
#import <CoreTelephony/CTCarrier.h>
@interface CTCarrier()
- (void) doFoo;
@end
@implementation CTCarrier
- (void) doFoo {}
@end
どうしますか?サンプルコードon GitHub。
私はカテゴリがで、どのように動作するかを知っています少なくとも私はそう思っています:)問題は、リンカーがカテゴリーを追加するクラスを見つけることができないと不平を言うことです。私がカテゴリの代わりにクラス拡張に切り替えると、リンカは不平を言うのをやめます。それは変だ。 – zoul
クラスは他の.mファイルに実装されていますか?私は '@implementation CTCarrier'を参照しています –
'CTCarrier'クラスはCore Telephonyフレームワークから来ています。 – zoul