Я определял NSString для использования в качестве домена ошибки в NSError и копировал то, как там работает ASIHttpRequest.
NSString* const FPServerAPIErrorDomain = @"FPServerAPIErrorDomain";
Я поместил константу в отдельный файл .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
, поэтому я изменил константу на #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
Но есть ли способ получить константу в глобальном пространстве, чтобы не выбрасывался 'повторяющийся символ'?