Hi
I added a category to CLLocation in CoreLocation but kept getting a link error.
I search around and through process of TRY IT AND BE DAMNED I fixed the problem by adding
-framework CoreLocation to Other Linker Flags
But dont know why?
I'm guessing its something to do with CoreLocation being and external framework.
The Code: 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
Build Error:
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
Getting link error when we added category
maybe because its external framework
got help from
hg clone https://traillocation.googlecode.com/hg/ traillocation
They added Foundation in Other Linker Flags for one of their targets
so I tried adding CoreLocation see attempt 2
ATTEMPT 1 : didnt work - see attempt 2
NOTE: to use this category on the 3.0 device, the -all_load linker flag
must be set in users of this library due to a toolkit bug.
See http://stackoverflow.com/questions/1147676/
Right Click on project name in Groups and Files pane
Get Info
Build tab
type Other Linker Flags in search
when found
Double click in right column
add -all_load
ATTEMPT 2 -
Right Click on project name in Groups and Files pane
Get Info
Build tab
type Other Linker Flags in search
when found
Double click in right column
add -framework CoreLocation
close
if you reopen the params are on two lines, this is ok
-framework
CoreLocation
Clean all targets
Build
seemed to work