Core Telephony フレームワークを使用するプロジェクトがあります。最近、コードがカテゴリで動作しなくなりました。リンカーは、クラスCTCarrier
が見つからないと文句を言います。CTCarrier
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 (Foo)
- (void) doFoo;
@end
@implementation CTCarrier (Foo)
- (void) doFoo {}
@end
カテゴリをクラス拡張に変更すると、コードが突然ビルドされます。
#import <CoreTelephony/CTCarrier.h>
@interface CTCarrier ()
- (void) doFoo;
@end
@implementation CTCarrier
- (void) doFoo {}
@end
どうしたの?GitHubのサンプル コード。