我正在开发一个比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。
为什么会发生这种情况的任何线索?
答案 0 :(得分:0)
链接器错误与框架有关。忘记在某处导入框架或将Core Location框架添加到OS X目标。如果它适用于一个而不是另一个,则听起来两个目标的设置方式不同。
仔细检查。清理构建。重启Xcode。