我想大多数人在开发的过程中,为了方便,都会把一些代码块或者一些规定值设定成宏定义,例如:
#define USER_DEFAULT [NSUserDefaults standardUserDefaults]
但是我们在苹果的开发文档中,经常见到const这样的用法
NSString *const UITableViewIndexSearch .........
那么这两种定义有何区别,究竟该怎么使用比较合适呢?
宏定义常用的有以下两种
1:常用的字符串抽成宏 如
#define FAIL_REQUEST_MSG @"获取数据失败,请稍候重试"
2:常用的代码抽成宏 如:
#define USER_DEFAULT [NSUserDefaults standardUserDefaults]
接下来根据几个方面来分析他们的优缺点,从而分析各自试用的条件
1:编译时刻:
------宏:预编译时刻 (#标识的代码都是在预编译时刻,比如打开项目的时候)
------const:编译时刻编译(Command+B的时候)
2:编译检查:
------ 宏:不会检查,很容易在程序运行的时候出现问题
------const:编译的时候会检查错误,相对安全系数高
3:使用方法:
------宏:可以定义字符串,可以定义代码
------const:定义一个全局的只读变量,只读参数
4:注意事项
------1:项目中定义了太多的宏,会影响项目的编译时间过长,而const 只会编译一次,大大的节省了时间,所以,常用的字符串通常使用const来定义
------2:无论是const还是宏, 都只会分配一次内存空间
总结:
----综上所述:我们已经大概的了解了宏和const的区别和特点,在实际运用中,还请各位根据自己的业务需求,具体情况具体分析.
网友评论