Stavo definendo un NSString da utilizzare come dominio di errore in NSError e stavo copiando come ASIHttpRequest stava facendo.ld: simbolo duplicato - causato da const
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
ho messo il const nel proprio file h // FPServerAPICoordinatorConstants.h
#ifndef FirePlayer_FPServerAPICoordinatorConstants_h
#define FirePlayer_FPServerAPICoordinatorConstants_h
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
#endif
ma quando ho incluso in più di una .m
SomeFile.m
#import "FPServerAPICoordinatorConstants.h"
SomeOtherFile.m
#import "FPServerAPICoordinatorConstants.h"
ho avuto errore linker "duplicate symbol"
ld: duplicate symbol _FPServerAPIErrorDomain in SomeFile.o and ....SomeOtherFile.o for architecture armv7
quindi cambio il const in #define e ha funzionato bene.
// FPServerAPICoordinatorConstants.h
#ifndef FirePlayer_FPServerAPICoordinatorConstants_h
#define FirePlayer_FPServerAPICoordinatorConstants_h
//THIS WAS TRIGGERING link errors
//NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
//working OK
#define FPServerAPIErrorDomain @"FPServerAPIErrorDomain"
#endif
Ma c'è un modo per ottenere il const nello spazio globale per non gettare il "simbolo duplicato"?
se si lascia fuori il includono magia di file, è la tua domanda lo stesso: "Posso fare const ** int i = 42; ** due volte nella stessa fonte/binario –
sì, ma anche 'come non si? usa #defines e usa const nello spazio globale '? è possibile? è preferibile? #define funziona, ma perché hanno allora i comandi? Im una persona java spostata in obj-c ho qualificato in voodoo 101 ancora –
non hai copiato ciò ASIHttpRequest sta facendo affatto tornare indietro e guardare di nuovo – hooleyhoop