我正在研究CLLocationManager
比 Xcode 提供的更高级的模拟,但遇到了一个奇怪的问题。我已经将和子类化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,我将 Xcode 4.6.3 与 iOS SDK 6.1 和 OSX SDK 10.8 一起使用,使用默认 LLVM 4.2 为 x86_64 构建。
任何线索为什么会发生这种情况?