美文网首页
iOS 项目中static,extern,define,cons

iOS 项目中static,extern,define,cons

作者: 郭小弟 | 来源:发表于2017-02-17 15:18 被阅读53次

文章内容为自己学习所得,写在简书上只为增加记忆,希望各位大神赐教,也不希望误人子弟,不喜勿喷!!!!谢谢

static

1>被static修饰的变量的生命周期会被延长,和应用程序的生命周期一样
2>被static修饰的变量只分配一次内存
3>程序开始运行时就会给static修饰的变量分配内存
4>被static修饰的局部变量作用域只在当前函数或方法中使用
5>被static修饰的全局变量作用域只在当前文件中起作用

extern

1>声明外部的全局变量(注意:extern只能用来声明,不能用来定义)
2>工作原理:先在当前文件下查找有没有对应的全局变量,如果没有就去其它文件中查找(static修饰的全局变量不能使用extern)

define

1>宏定义是在预编译里进行文本替换
2>没有类型区分,不会进行代码检查
3>大量使用宏定义会使编译的二进制文件增大,宏定义占用的只是代码段而已,只会分配一块内存空间

const

作用:1>使用const修饰的基本变量和指针变量
2>使用const修饰的变量不可以被改变,修饰完以后就会变成只读属性
3>const右边的变量不能被修改

四种写法:

  1、static const NSString *Coder = @"xxx";

  2、const NSString *Coder = @"xxx";

  3、NSString const *Coder = @"xxx";  

  4、NSString * const Coder = @"xxx"。

全局常量:不管你定义在任何文件夹,外部都能访问(如:const NSString *Coder = @"x xx";)

局部常量:用static修饰后,不能提供外界访问(如:static const NSString *Coder = @"汉xxx";)

const右边的总不能被修改:
1.const NSString *Coder = @"xxx";

"*Coder"不能被修改, "Coder"能被修改

2.NSString const *Coder = @"xxx";

"*Coder"不能被修改, "Coder"能被修改

3.NSString * const Coder = @"xxx";

"Coder"不能被修改,"*Coder"能被修改

相关文章

网友评论

      本文标题:iOS 项目中static,extern,define,cons

      本文链接:https://www.haomeiwen.com/subject/zpdhwttx.html