外部全局变量
外部全局变量即该变量不仅可以在所定义的文件内被访问,也可以在其他文件中被访问。凡是定义在函数或方法之外的变量(除静态变量之外)都是外部全局变量。
若一个变量是外部全局变量,则该变量最好定义在源文件(.m)的起始位置,这样可以为了更好的维护。
看个例子:
//Test.m 文件
//定义一个外部全局变量
NSString * name;
@implementation Test:NSObject
-(NSString *) getName{
//直接使用
return name;
}
@end
该例子定义了一个类型是NSString名字为name的全局外部变量,那其他文件怎么使用该变量呢?这时候就得用到关键字extern,使用语法:
extern type varName;
上面语法的意思是:即将使用一个已经定义好的外部全局变量,假如在TestVar.m文件中使用Test.m中定义的name,写法是这样的:
//TestVar.m
//整个文件都可以使用该变量,若只是该文件中的一个方法使用,
//没必要这样声明,直接在方法里面声明
extern NSString *name
@implementation TestVar
@end
也可以在头文件中,把全局变量用extern进行声明,这样就省去在别的文件中使用时,再次进行声明了,例子:
//Test.h Test头文件
extern NSString *name
@interface Test:NSObject
@end
其他文件直接import Test.h文件即可使用name外部全局变量。