2013-06-17 10 views
11

Mam zadeklarował stałe o tej samej nazwie w kilku różnych klas, w swoim pliku .m, w ten sposób:Stałe w Objective-C i symbol „duplikat” Błąd linkera

@implementation MyViewController 
const NSInteger numberOfItems = 6; 
... 
@end 

Ale dostać " duplikat symbolu "błąd podczas próby zbudowania projektu. Znalazłem kilka postów dotyczących tego problemu dotyczących stałych zewnętrznych lub globalnych, ale chciałbym tylko zadeklarować pewne stałe w swoich klasach, w jaki sposób mogę to zrobić?

Dzięki

+0

Nie wierzę, że możesz zadeklarować stałą prywatną dla klasy, ale jak @MichK odpowiada, możesz podać constowi słowo kluczowe "statyczne", aby zachować go jako prywatne dla tego pliku źródłowego (co pozwala osiągnąć cel, jeśli tylko ta klasa jest w pliku źródłowym). – mah

Odpowiedz

26

Jeśli chcesz użyć stały tylko w jednym .m pliku następnie zadeklarować ją jako static. Na przykład: static NSString * const CONSTANT_STRING = @"Constant I am".

W przypadku NSInteger można napisać w każdym .m pliku:

static const NSInteger my_const = 3; 

Jeśli chcesz globalne (jedno stałe z jedną wartością widoczną w każdym pliku), a następnie wpisz swój .h:

extern const NSInteger my_global_const; 

aw pliku .m można dodać

const NSInteger my_global_const = 5; 
+0

'statyczny NSString * const CONSTANT_STRING = @" Za wygraną! "' @MichK – LordParsley