2012-08-13 21 views

Odpowiedz

45

Należy extern swój ciąg w nagłówku, a następnie zdefiniować ciąg w realizacji.

//ClassA.h 
extern NSString * const kMyConstant; 

//ClassA.m 
NSString * const kMyConstant = @"my constant string"; 

//ClassB.h/m 
#import "ClassA.h" 

... 
    NSLog(@"String Constant: %@", kMyConstant); 
12

Musisz usunąć static - który określa, że ​​ jest widoczny tylko w plikach powiązanych z tym.

Następnie zadeklarować (w przeciwieństwie do definiującej) ciąg w nagłówku Klasa A to:

extern NSString * const kMyConstant; 

i import że nagłówku gdziekolwiek chcesz używać ten ciąg. Deklaracja extern mówi, że istnieje NSString * const o nazwie kMyConstant, której pamięć jest tworzona w innym miejscu.

Jeśli definicja statyczna to już w nagłówku, musisz przenieść ją gdzie indziej (zwykle plik implementacji). Rzeczy można zdefiniować tylko raz, a jeśli spróbujesz zaimportować plik, który definiuje zmienną, dostaniesz błąd linkera.

4

Jeśli jest statyczny, nie można (do tego służy słowo kluczowe static).

Jeśli po prostu zadeklarować ją jako zmienną globalną, jednak można zrobić coś takiego:

// ClassA.m 

NSString *const str = @"Foo"; 

// ClassB.m 

extern NSString *const str; 

NSLog(@"str is: %@", str); 
Powiązane problemy