即我想要把这个在我的代码:
static BOOL MyConstantBool = YES;
它必须得到之前或@implementation之后? 有没有规则在什么地方呢? 它也可以进入头文件?
即我想要把这个在我的代码:
static BOOL MyConstantBool = YES;
它必须得到之前或@implementation之后? 有没有规则在什么地方呢? 它也可以进入头文件?
如果要定义一个全局变量,也不要紧,你把它(内部或外部@implementation的)。 在这种情况下, static
意味着该变量是来自该编译单元(m文件)内才可见。
也有静态的变量,这些变量的函数定义。 他们的工作就像全局变量,但只看到从函数的范围之内。
如果是后@implementation
块,那么你就不能在使用它@implementation
块(除非它被转发声明别处使用extern
)。 下面是我如何做到这一点:
//Constants.h
extern BOOL MyConstantBool;
extern NSString* MyConstantString;
//Constants.m
#import "Constants.h"
BOOL MyConstantBool = YES;
NSString* MyConstantString = @"Hello, world!";
//SomeOtherFile.m
#import "Constants.h"
//you can now use anything declared in Constants.h
全局可以去几乎任何你想要的; 只是把它放在任何地方风格上是有道理的。 我更愿意看到附近的源文件的顶部全局,个人。
虽然你可以把定义放入头文件,我不建议这样做。 前进的道路把任何一种定义的头文件可能会导致多重定义的符号链接错误。 如果你需要一个以上的编译单元看到的变量,你不能让它static
反正-你需要在实现文件的地方来定义它,并使用extern
使其之间的各种源文件可见。