OSL上的CLLocation子类化

时间:2013-07-17 16:51:01

标签: ios objective-c macos inheritance core-location

我正在开发一个比Xcode提供的更先进的CLLocationManager模拟器,我遇到了一个奇怪的问题。我已将CLLocationManagerCLLocation

分为子类
// 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。

为什么会发生这种情况的任何线索?

1 个答案:

答案 0 :(得分:0)

链接器错误与框架有关。忘记在某处导入框架或将Core Location框架添加到OS X目标。如果它适用于一个而不是另一个,则听起来两个目标的设置方式不同。

仔细检查。清理构建。重启Xcode。