const与宏的区别
宏常见用法
:
1.
常用的字符串抽成宏
2.
常用的代码抽成宏
宏的命令规范
:
以项目前缀开头
,
以
Key
结尾
#define DDAccountKey @
"account"
#:
预编译
#define DDUserDefaults [NSUserDefaults standardUserDefaults]
const:
常量
const:
当有字符串常量的时候
,
苹果推荐我们使用
const
const 与宏的区别
1. 编译时刻 : 宏 : 预编译 const: 编译时刻
2. 编译检查 : 宏 : 不会检查错误 const: 会检查错误
3. 宏的好处 : 可以定义代码
const 与宏的区别
1. 编译时刻 : 宏 : 预编译 const: 编译时刻
2. 编译检查 : 宏 : 不会检查错误 const: 会检查错误
3. 宏的好处 : 可以定义代码
4.宏的坏处:编译时间过长,因此常用的字符串通常使用const修饰
(经常使用宏不会造成内存不段增加
,
每次使用宏
,不
会多次分配内存,多次使用同一宏,指向的是同一地址,
宏定义的是常量,常量都放在常量区,只会生成一份内存。
)
苹果经常把常用的字符串定义成
const
全局变量(不加const)
NSString
*
const
DDAccountKey =
@"account"
;
const作用:限制类型
1.
仅仅是用来修饰右边的变量
(
只能修饰变量
:
基本变量
,
指针变量
,
对象变量
)
2.const修饰的变量,表示只读
const书写规范:一定要放在变量的左边
用
const
修饰基本变量
定义
int
只读变量(不是常量)
方式一
:
int
const a = 10; // a:只读变量
方式二
:
constint a = 10; // a:只读变量
p的指针指向a的地址,再指向b的地址,修改p指向地址的值,b的值被修改
//
用
const
修饰指针变量
int * const p = &a; // p:
只读变量
*p:
变量
const
int *p = &a; // *p:只读变量 p:变量(a变量只读)
intconst *p = &a; // *p:只读 p:变量
intconst * const p = &a; // *p:只读 p:只读
intconst *p = &a; // *p:只读 p:变量
intconst * const p = &a; // *p:只读 p:只读
constint * const p = &a; // *p:只读 p:只读
const
开发中使用场景
1.
定义一个全局只读变量
2.在方法中定义只读参数(不能改传过来的参数)
修饰对象
- (
void
)test:(
NSString
*
const
)name;
修饰基本变量
- (
void
)test1:(
int
const)a;
修饰指针变量
- (
void
)test2:(
int
const *)p