从另一个类引用静态NSString*const

Jul*_*ian 21 static constants objective-c

在课堂上AI有这个:

static NSString * const kMyConstant = @"my constant string";
Run Code Online (Sandbox Code Playgroud)

我怎样才能从B级中引用它?

Joe*_*Joe 48

您应该在标头中对字符串进行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);
Run Code Online (Sandbox Code Playgroud)


Jos*_*ell 13

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

然后,声明(而不是定义)A类标题中的字符串:

extern NSString * const kMyConstant;
Run Code Online (Sandbox Code Playgroud)

并在您想要使用此字符串的任何位置导入该标头.该extern声明说,存在一个NSString * const由名称kMyConstant,其存储在其他地方被创建.

如果静态定义已经在标题中,则需要将其移动到其他位置(通常是实现文件).事情只能定义一次,如果您尝试导入定义变量的文件,您将收到链接器错误.