宏与const关键字

宏定义
#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/";

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容