在A级我有这样的:引用一个静态的NSString * const的另一个类
static NSString * const kMyConstant = @"my constant string";
我怎样才能引用这个从B类?
在A级我有这样的:引用一个静态的NSString * const的另一个类
static NSString * const kMyConstant = @"my constant string";
我怎样才能引用这个从B类?
你应该你的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);
您需要删除static
- 指定kMyConstant
只在与此链接的文件中可见。
然后,声明(而不是定义)在A类的标题字符串:这个头,无论你想使用这个字符串
extern NSString * const kMyConstant;
和进口。 extern
声明表示存在名称为kMyConstant
的NSString * const
,其存储在其他地方创建。
如果头中的静态定义是已经,则需要将它移动到别处(通常是实现文件)。事情只能定义一次,如果你尝试导入一个定义了变量的文件,你会得到一个链接器错误。
如果它是静态的,则不能(这就是static关键字的用途)。
如果你只是把它声明为一个全局变量,不过,你可以做这样的事情:
// ClassA.m
NSString *const str = @"Foo";
// ClassB.m
extern NSString *const str;
NSLog(@"str is: %@", str);