Я определял NSString для использования в качестве домена ошибки в NSError и копировал, как это делает ASIHttpRequest.
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
Я помещаю const в свой собственный .h файл //FPServerAPICoordinatorConstants.h
#ifndef FirePlayer_FPServerAPICoordinatorConstants_h
#define FirePlayer_FPServerAPICoordinatorConstants_h
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
#endif
но когда я включил его в более чем один .m
SomeFile.m
#import "FPServerAPICoordinatorConstants.h"
SomeOtherFile.m
#import "FPServerAPICoordinatorConstants.h"
У меня есть ошибка компоновщика 'дубликат символа'
ld: duplicate symbol _FPServerAPIErrorDomain in SomeFile.o and ....SomeOtherFile.o for architecture armv7
поэтому я изменяю const на #define, и он работает нормально.
// 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
Но есть ли способ заставить const в глобальном пространстве не "дублировать символ"?