0

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

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

4

1 回答 1

0

链接器错误与框架有关。忘记在某处导入框架或将核心位置框架添加到 OS X 目标。如果它适用于一个但不适用于另一个,听起来这两个目标的设置不同。

再检查一遍。清理构建。重新启动 Xcode。

于 2013-07-17T17:25:34.657 回答