1、用法
-
const
: 被const修饰的变量是只读的,不可更改。推荐使用const来替代宏定义,宏定义不会报错 -
static
: 延长变量的生命周期,程序结束才会销毁。在同一作用域或文件中,只被初始化一次 -
extern
:生明一个全局变量,不能定义变量。现在当前文件中查找全局变量,如果没有,再去其他文件中查找
2、经典使用场景
1、static和const的组合使用,代替宏定义全局变量
#pragma mark - 全局数值的变量
#pragma mark -
static const NSTimeInterval ani_time = 5;
- (IBAction)ShowAction:(id)sender {
UIView *view = [[UIView alloc]initWithFrame:self.view.bounds];
view.backgroundColor = [UIColor redColor];
//包含了NSTimeInterval的类型信息,有助于开发文档的编写和后续的维护,并且不可修改,相同名字会报错,全局有效
[UIView animateWithDuration:ani_time animations:^{
[self.view addSubview:view];
}];
}
2、extern和const的组合使用,供外界使用且只读
.h
@interface Money : NSObject
//扩展,只读的字符串变量定义
extern NSString *const money;
@end
.m
#import "Money.h"
NSString *const money = @"10元";
@implementation Money
@end