1、静态变量:
static 修饰的变量,是一个私有的全局变量;在 OC 中 static 修饰的变量只作用于它声明所在的 .m 实现文件中,同时必须放 @implementation 外面或方法中,它只在程序启动初始化一次。
static int duration;
2、静态常量:
当被 static 修饰的变量同时被 const 修饰时,改变量变为常量,不可变,并且“只在编译单元内可见”,常用来替代 #define 宏,这样当修改其值时,编译起会报错。
static const NSTimeInterval AnimationDuration = 0.5;
static NSString *const AnimationName = @"Fade";
3、全局变量/常量:
extern 修饰的变量,是一个全局变量,当同时被 const 修饰时,变为一个全局常量,在头文件中使用 extern 来声明全局常量,并在相关实现文件中定义其值。这种常量要出现在全局符号表中,所以其名称应该加以区隔,通常与之相关的类名做前缀。
// .h 文件
extern NSString *const WCYAnimationName;
// .m 文件
NSString *const WCYAnimationName = @"Fade";