Estaba definiendo un NSString para usar como dominio de error en NSError y estaba copiando cómo estaba haciendo ASIHttpRequest.ld: símbolo duplicado - causado por const
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
pongo la const en su propio archivo .h // FPServerAPICoordinatorConstants.h
#ifndef FirePlayer_FPServerAPICoordinatorConstants_h
#define FirePlayer_FPServerAPICoordinatorConstants_h
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
#endif
pero cuando lo incluí en más de un .m
SomeFile.m
#import "FPServerAPICoordinatorConstants.h"
SomeOtherFile.m
#import "FPServerAPICoordinatorConstants.h"
que tiene error de enlazador 'símbolo duplicado'
ld: duplicate symbol _FPServerAPIErrorDomain in SomeFile.o and ....SomeOtherFile.o for architecture armv7
así que cambio el const a #define y funcionó bien.
// 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
¿Pero hay una manera de obtener la const en el espacio global para no arrojar 'símbolo duplicado'?
si omite el archivo de inclusión mágico, ¿su pregunta es la misma que: "puedo hacer ** const int i = 42; ** dos veces en la misma fuente/binario? –
sí, pero también '¿cómo NO use #defines y use const en el espacio global '? ¿es posible? ¿es preferible? #define funciona, pero ¿por qué entonces tiene consts? Soy una persona java movida a Obj-c No he calificado en el vudú 101 aún –
No ha copiado ASIHttpRequest lo está haciendo en absoluto volver atrás y mirar de nuevo – hooleyhoop