ld: повторяющийся символ, вызванный const

Я определял 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

Но есть ли способ получить константу в глобальном пространстве, чтобы не выбрасывался 'повторяющийся символ'?

18
задан Brian Tompsett - 汤莱恩 29 November 2015 в 12:16
поделиться