从另一个类引用静态的NSString * const的(Referencing a static N

2019-06-27 01:04发布

在课堂上AI有这样的:

static NSString * const kMyConstant = @"my constant string";

我怎样才能引用这个从B类?

Answer 1:

你应该你的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);


Answer 2:

您需要删除的static -即指定kMyConstant仅在这一个链接的文件可见。

然后,声明(而不是限定 )中的一类的报头中的字符串:

extern NSString * const kMyConstant;

何地,你想用这个字符串导入头。 该extern声明说,存在一个NSString * const由名字kMyConstant其存储在其他地方被创建。

如果静态定义已经在标题中,你需要移动到别处它(通常是执行文件)。 东西只能定义一次,如果你尝试导入定义变量的文件,你会得到一个连接错误。



Answer 3:

如果它是静态的,你不能(这是静态的关键字是什么)。

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

// ClassA.m

NSString *const str = @"Foo";

// ClassB.m

extern NSString *const str;

NSLog(@"str is: %@", str);


文章来源: Referencing a static NSString * const from another class