const
含义:类型修饰符,用于一般修饰基本变量和指针变量。
作用:
1.修饰基本变量
被const修饰的基本变量后,其值不可变,相当于常量 。
2.修饰指针变量
2.1 在*的左边 值不可变,指针方向可变。
2.2 在*的右边 值可变,指针方向不可变
3.使用场景
3.1 代替宏,定义为只读常量
3.2 在方法参数里,定义为只读,不可修改
static
含义:关键词,一般用于修饰变量
作用:
1.修饰局部变量
1.1延长生命周期,当程序启动时创建,当程序退出时销毁。
1.2 在整个程序中,只分配一次内存。(存放在静态区中)
1.3 对局部变量的作用域不影响。
2.修饰全局变量 被static修饰的全局变量,只能在本文件中能访问。
extern
作用:
仅仅声明一个全局作用,用于其他文件访问
(如果在一个类中定义了一个全局变量,想要在其他类中也访问,那么需要用extern声明在能用)
宏
预处理指令,(#开头的都是预处理指令) ,相当与拷贝。
一般用于定义一些经常需要用的方法或函数,以及参数。
const与宏的区别
1.编译时刻不同。宏是预编译,const是编译时刻。
2.编译检查。宏不会参与编译检查,const会参数编译检查。
3.宏的好处:可以定义一些经常需要用的方法或函数
4.宏的坏处: 加长程序启动的编译时间,不利用调试bug
static和const的联合使用
(推荐使用与修饰变量,用于替代宏)作用:只分配一次内存,不能被修改,且只能在本类中能访问。
extern和const的联合使用
1.一般在多人开发中,统一在一个文件中使用,避免冲突。
2.在.m 文件中利用const定义全局变量,在.h文件中利用extern声明(注意:一般使用UIKIT_EXTERN (这是个宏)代替extern 如:UIKIT_EXTERN NSString *name;)