0

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 用にビルドしています。

なぜこれが起こっているのか手がかりはありますか?

4

1 に答える 1