Xcode が提供するものよりも高度なモックに取り組んでおりCLLocationManager
、奇妙な問題に遭遇しました。と の両方をサブクラス化CLLocationManager
しましたCLLocation
。
// foobar.h
@interface MyLocation : CLLocation
@end
@interface MyLocationManager : CLLocationManager
@end
// foobar.m
@implementation MyLocation
@end
@implementation MyLocationManager
@end
iOS用のプロジェクトをビルドすると問題ありませんが、OS X用に同じことをすると、リンク時に次のエラーが発生します:
Undefined symbols for architecture x86_64:
"_OBJC_METACLASS_$_CLLocation", referenced from:
_OBJC_METACLASS_$_MyLocation in AppDelegate.o
"_OBJC_METACLASS_$_CLLocationManager", referenced from:
_OBJC_METACLASS_$_MyLocationManager in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
この質問Error on CLLocation subclassingとは異なり、適切なフレームワークがプロジェクトに追加されています。前述のように、このセットアップは iOS 用に完璧にビルドされますが、OSX 用にはビルドされません。
FWIW、私は iOS SDK 6.1 および OSX SDK 10.8 で Xcode 4.6.3 を使用しており、デフォルトの LLVM 4.2 で x86_64 用にビルドしています。
なぜこれが起こっているのか手がかりはありますか?