宏
宏定义
#define KYUserDefaults [NSUserDefaults standardUserDefaults]
宏的使用时机
1.常用的字符串抽成宏(不常用)
2.常用的代码抽成宏(常用)
编译时机及弊端
编译时机:宏是在预编译时运行的。
弊端:
1.如果编写过多的宏,将会导致预编译时间过长,影响代码书写速度。最好的做法是定义const修饰的字符串。
2.宏无法检查内容是否有错误。
const关键字
const的使用时机
1.定义一个只读变量时(基本变量,指针变量,对象变量)。
2.在方法中定义只读参数时。
const定义基本变量
//两种写法效果一样
int const a = 10;
const int a = 10;
const定义指针变量
//定义int变量
int a = 10;
//用const定义a的指针变量
//const修饰p
int * const p = &a;//p:只读变量,无法修改 *p:不受影响
//const修饰*p
int const * p = &a;//*p:只读变量,无法修改 p不受影响
//const修饰*p,也修饰p,作为面试会问到
int const * const p = &a;//*p:只读变量 p:只读变量 都不能修改
const定义方法参数
//在方法中定义只读参数
- (void)test:(NSString * const)name{
//表示参数不能修改
}
编译时机
在编译时,即command + B时编译,好处在于不影响预编译速度。另外,苹果官方也经常把常用字符串定义成const。
小结
通常定义常用一段代码片段时使用宏,例如:
//定义
#define Color(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
//调用
Color(235,235,235);
通常定义常用字符串时使用const,例如:
//我在定义接口时使用较多
//在.h文件中需要用extern来声明,否则会报错
extern NSString const * BaiDu;
//在.m文件中这样定义
NSString const * BaiDu = @"https://www.baidu.com/";