在开发中我们经常用到define和const,那么他们怎么使用,区别在哪里:
define:
宏定义,他只是在编译器预处理的时候加载,没有任何类型,也不做任何类型的检查,会出现在内存的代码区域,大量使用会导致二进制文件变大。
const:
1.变量,使用到的地方其实都共享一块内存空间,不会申请N多内存空间,可以修改。
2.常量,使用到的地方其实都共享一块内存空间,不会申请N多内存空间,可以修改。但是可以根据const 的修饰来确定谁是否可变!
苹果API就是这样写的:

NSString *str =@"zyx";
const NSString *str1 =@"zyx";
NSString const *str2 =@"zyx";
NSString * const str3 =@"zyx";
这四个有什么不同:
1.是最普通的一个字符串变量,就不提了,经常用。
2.字符串str1被const修饰,*str1不能被修改,str可以被修改。
3.字符串str2被const修饰,*str2不能被修改,str可以被修改。2、3没什么区别。
4.这样的写法,str3不能被修改,*str3可以被修改。
看出来了吗?
总结:const右边的不能被修改。

所以我们定义一个常量却不想修改:NSString * const str =@"zyx";
一般在项目里,会把一些经常用的常量写在一个自定义Object类里:
1.定义的一些常量

2.给外部提供的变量链接

3.其他类调用

网友评论