链接器找不到MKErrorDomain

时间:2011-03-31 01:30:27

标签: iphone mapkit

将错误代码测试添加到MKReverseGeocoder的回调后,得到一个链接器错误,指示未定义_MKErrorDomain:

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error {
    // some useful but irrelevant code removed here...

    // if the error is not permanent, try again
    NSString *errorDomain = [error domain];
    NSInteger errorCode = [error code];

    if ([errorDomain isEqualToString:MKErrorDomain] && errorCode != MKErrorPlacemarkNotFound) {
        [self scheduleReverseLookup];
    }
}

链接错误:

Undefined symbols for architecture armv6:
  "_MKErrorDomain", referenced from:
      -[Tracker reverseGeocoder:didFailWithError:] in Tracker.o

请注意,MapKit正在链接,并且可以在删除MKErrorDomain的测试中正常工作。

1 个答案:

答案 0 :(得分:2)

我有同样的问题,对于arvm7,最新的iOS 4.3 / Xcode 4.0.1也是如此。

看起来<MapKit/MKTypes.h>在MapKit二进制文件中遗漏了他的小弟弟MKTypes.o ...

无论如何,快速(和肮脏)修复是使用@"MKErrorDomain"而不是MKErrorDomain常量。

或稍好一点,无论如何这在以后修复,或者如果你经常引用它,你可以重新定义它:

#define MKErrorDomain @"MKErrorDomain"