(一)extren:外部变量
作用:引用其他类的全局变量
//externViewController.m 全局变量
NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change";
// externViewController.h
extern NSString * const AFNetworkingReachabilityDidChangeNotification;
#import "ViewController.h"
#import "externViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",AFNetworkingReachabilityDidChangeNotification);
}
打印结果
2015-10-27 15:04:56.236 extrendemo[1031:91474] com.alamofire.networking.reachability.change
(二)static :内部变量
1、修饰全局变量
作用:static定义的全局变量,extren引用依然获取不到其值
2、修饰局部变量
作用:某个函数调用频率比较高并且某个变量值固定不变可以使用。
- (void)viewDidLoad {
[super viewDidLoad];
[self test];
[self test];
[self test];
}
-(void)test{
static int PI = 3.14;
NSLog(@"%d",PI);
PI = PI + 1;
}
(三)define与const的使用
1、define:预处理指令,在编译之前替换宏值,运行中有几个宏就开辟几个临时内存空间, 适用于传入多个变量
#define AYColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
2、const:只用一份内存,适用于只有一个变量且不允许修改
//externViewController.m
NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change";
// externViewController.h
extern NSString * const AFNetworkingReachabilityDidChangeNotification;