纠结的const(static) 和 define

const(static) 和 define 在开发中常用来定义常量,这样做的好处是:使代码更易维护、提高代码的效率。

1、const(static)
const是C/C++中的一个关键字(修饰符),const一般用来定义一个常量,既然叫做常量,即以后再也不能修改其值。
const 定义常量时,编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率比宏定义要高。从汇编的角度来看,只是给出了对应的内存地址,所以,const定义的常量在程序运行过程中只有一份拷贝。
const 定义常量时,通常是同时定义常量的类型、值,且常与 static 结合使用。
如:
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. static CGFloat const kScale = 0.8;  
  2. static NSString *const identifierCell = @"ListCell";  

2、define
define, 宏定义, 则是一条预编译指令, 编译器在编译阶段会将所有使用到宏的地方简单地进行替换。
define 定义常量时,在内存中有若干个拷贝。
define 定义常量时,只是定义了常量的值,但未做类型设置。

define 除了定义常量外,还能进行高级宏定义功能
如:定义函数;定义OC中常用的单例模式;还能根据传参数生成字符串。
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /// 定义常量  
  2. #define USERID @"123456"  
  3. /// 获取当前app delegate  
  4. #define GetAPPDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)  
  5. /// 打开浏览器  
  6. #define OpenUrlInExplorer(urlString) {NSURL *url = [[NSURL alloc] initWithString:urlString];[[UIApplication sharedApplication] openURL:url];}  

个人建议在确定了使用的常量类型,及常量值时使用 const 进行定义;而简单的函数,或传参字符串等高级定义时,则使用 define 进行宏定义。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值