2012-08-13 84 views

回答

45

你应该你的extern字符串中的标题,然后定义在执行字符串。

//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

您需要删除static - 指定kMyConstant只在与此链接的文件中可见。

然后,声明(而不是定义)在A类的标题字符串:这个头,无论你想使用这个字符串

extern NSString * const kMyConstant; 

和进口。 extern声明表示存在名称为kMyConstantNSString * const,其存储在其他地方创建。

如果头中的静态定义是已经,则需要将它移动到别处(通常是实现文件)。事情只能定义一次,如果你尝试导入一个定义了变量的文件,你会得到一个链接器错误。

4

如果它是静态的,则不能(这就是static关键字的用途)。

如果你只是把它声明为一个全局变量,不过,你可以做这样的事情:

// ClassA.m 

NSString *const str = @"Foo"; 

// ClassB.m 

extern NSString *const str; 

NSLog(@"str is: %@", str); 
相关问题