好多人开发久了,基本的一些东西都比较模糊了。
我今天来讲讲宏与const的区别
1.在编译时刻 宏:是预编译 const:在编译的时候
2.编译检查 宏:不会检查错误 cons: 会做编译检查
3.宏:可以定义代码
4.宏的坏处: 编译时间过长 const只编译一次 大大减少编译时间 因此常用字符串常量用const
这里讲一点:如果你想你的项目编译的快点,就不要把大量的字符串定义为宏,要学苹果 多用const 定义为只读常量
在讲讲他们的使用
宏的使用
1.常用的字符串定义为宏
2.常用的代码用 宏
const的使用
1.仅仅用来修饰右边的变量(只能修饰变量: 基本变量,指针变量,对象变量)
2.用const修饰的变量 表示只读变量 而不是常量
在开发中的使用
1.定义一个只读全局变量
2.方法中定义只读参数
关于const 修饰右边变量之谜
其实很简单,主要记住 一个cosnt只能修饰一个变量(变量分为:基本变量,指针变量,对象变量)
int const num = 20; 与 const int num = 20; 是没区别的 都是修饰基本变量num num都不能修改
int * const p = ∑ // p: 是只读变量 *p:变量
const int *p = ∑ // *p:只读变量 p 可以改;
int const * const p = ∑ //*p p 都是只读
const int * const p = ∑//*p p 都是只读
搞懂上面四个语句 你就能搞清楚了
const 和 static 连用
表示 静态全局只读变量
如:static NSString * const identifer = @"identifer";
顺便说说 static 和 extern
extern
1.声明一个全局变量,不能定义变量
注意:extern修饰的变量不能初始化
static作用
1.修饰局部变量
*延长局部变量的生命周期 只要程序运行,局部变量就会一直存在
*局部变量只会分配一次内存 为什么?用static修饰的代码,只会在程序一启动就会执行,以后就不会执行了
(我猜想 如果想app启动快 尽量少定义static修饰的代码 不知道对不对)
2.修饰全局变量
*只会修改全局变量的作用域,表示只能在当前文件中使用
一般开发中 也有 extern与 const的连用
一般开发这么使用
extern NSString *const AppKey;
NSString *const AppKey = @"jurirj";
但是切记要单独建一个 全局变量的文件 比如 globalConst文件
里面放全部变量 防止不同的小伙伴定义的全局常量重名
网友评论