Я добавил категорию в CLLocation в CoreLocation, но продолжал получать ошибку ссылки.
Я обыскиваю и пробую процесс ПОПРОБОВАТЬ И БЫТЬ ЧЕРТЫ Я исправил проблему, добавив
CoreLocation для других флагов компоновщика
Но не знаете почему?
Я предполагаю, что это как-то связано с существом CoreLocation и внешней структурой.
Код:
CLLocation + DistanceComparison.h
#import < Foundation/Foundation.h >
#import < CoreLocation/CoreLocation.h >
static CLLocation * referenceLocation;
@interface CLLocation (DistanceComparison)
- (NSComparisonResult) compareToLocation:(CLLocation *)other;
@end
CLLocation + DistanceComparison.m
#import "CLLocation+DistanceComparison.h"
#import <CoreLocation/CoreLocation.h>
@implementation CLLocation (DistanceComparison)
- (NSComparisonResult) compareToLocation:(CLLocation *)other {
CLLocationDistance thisDistance = [self getDistanceFrom:referenceLocation];
CLLocationDistance thatDistance = [other getDistanceFrom:referenceLocation];
if (thisDistance < thatDistance) { return NSOrderedAscending; }
if (thisDistance > thatDistance) { return NSOrderedDescending; }
return NSOrderedSame;
}
@end
Ошибка сборки:
Ld build/Debug-iphonesimulator/SortedLocations.app/SortedLocations normal i386
cd /Users/clearbrian/Documents/Development/IPhoneDevelopment/034.SortedLocations/SortedLocations
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk -L/Users/clearbrian/Documents/Development/IPhoneDevelopment/034.SortedLocations/SortedLocations/build/Debug-iphonesimulator -F/Users/clearbrian/Documents/Development/IPhoneDevelopment/034.SortedLocations/SortedLocations/build/Debug-iphonesimulator -filelist /Users/clearbrian/Documents/Development/IPhoneDevelopment/034.SortedLocations/SortedLocations/build/SortedLocations.build/Debug-iphonesimulator/SortedLocations.build/Objects-normal/i386/SortedLocations.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -o /Users/clearbrian/Documents/Development/IPhoneDevelopment/034.SortedLocations/SortedLocations/build/Debug-iphonesimulator/SortedLocations.app/SortedLocations
Undefined symbols:
".objc_class_name_CLLocation", referenced from:
literal-pointer@__OBJC@__cls_refs@CLLocation in RootViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Ошибка ссылки при добавлении категории
может потому что его внешние рамки
получил помощь от
рт клон https://traillocation.googlecode.com/hg/ след
Они добавили основание в другие флаги линкера для одной из своих целей
поэтому я попытался добавить CoreLocation см. попытку 2
ПОПЫТКА 1: не сработало - см. Попытку 2
ПРИМЕЧАНИЕ: чтобы использовать эту категорию на устройстве 3.0, флаг компоновщика -all_load
должен быть установлен в пользователях этой библиотеки из-за ошибки инструментария.
См. Категории в статической библиотеке для устройства iPhone 3.0
Щелкните правой кнопкой мыши имя проекта на панели «Группы и файлы»
Получить информацию
Вкладка «Сборка»
введите другие флаги компоновщика в поиске
когда найдено
Двойной клик в правом столбце
add -all_load
ПОПЫТКА 2 -
Щелкните правой кнопкой мыши имя проекта в панели «Группы и файлы»
Получить информацию
Вкладка построения
введите другие флаги компоновщика в поиске
когда найдено
Двойной клик в правом столбце
add -framework CoreLocation
близко
если вы снова откроете параметры в двух строках, это нормально
-framework
CoreLocation
Очистите все цели
Построить
казалось, работает