ios static 优点 作用 和 #define const 区别
来源:互联网 发布:怎样修改手机型号软件 编辑:程序博客网 时间:2024/06/03 23:40
static 关键字的作用?
1)第一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。
3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。
1、const与宏 #define 的区别:
1、编译时刻:宏是预编译(之前处理), const是编译阶段(之后处理)。2、编译检查:宏不做检查,有错误不会提示, const会检查,有错误会提示。3、宏的好处:宏能定义方法,const不能定义方法 只能用常量4、宏的坏处:大量使用宏,容易造成编译时间久。// 宏#define DEMO @"www.baidu.com"
2、static与const结合使用
1、变量用来 static 与const声明了,如果试图修改由const修饰的变量,那么编译器就会报错。2、苹果官方不推荐我们使用宏, 推荐使用const常量。// 字符串常量static NSString * const demo = @"www.baidu.com";
3、extern与const 结合使用
在开发中需要在多个文件中经常使用同一个字符串常量,可以使用extern与const结合使用。1、static与const 结合:在每个文件都需要定义一份静态全局变量。2、extern与const结合:定义一份全局变量,多个文件都可以访问。 有时候需要对外公开某个常量。比方说,你可能要在类代码中调用NSNotificationCenter以通知他人。用一个对象来派发通知,令其它欲接收通知的对象向该对象注册,这样就能实现此功能。.h文件extern NSString *const Demo;.m文件NSString *const Demo = @"www.baidu.com";这样定义常量要优于使用#define预处理指令,因为编译器会确保常量值不变。一旦 .m 文件中定义好了,即可随处使用,而采用预处理指令定义常量可能会无意中修改,从而导致应用程序各个部分使用的值互不相同。
阅读全文
0 0
- ios static 优点 作用 和 #define const 区别
- iOS#define和static const
- const和define区别 static
- static、const、extern和define的区别
- iOS 中extern、static修饰变量的使用及define和const区别
- const和static的作用以及区别
- php中static、const和define的区别
- php中static、const和define的区别
- C++中const,define和static的区别
- C++中define、const和static的区别
- 关键字static/const的作用 const常量与define宏定义的区别
- #define和const区别
- define和const区别
- const和define区别
- const 和 #define区别
- const和#define区别
- const 和 #define区别
- const 和 #define区别
- Linux下实现免密码登录(超详细)
- maven管理,hibernate整合线程池c3p0
- 资深产品经理是如何进行产品分析的?(二)
- linux c++多线程互斥锁和信号量简单实例
- 二叉树的镜像
- ios static 优点 作用 和 #define const 区别
- 机器学习经典算法详解及Python实现--元算法、AdaBoost
- 关于mybatismapper.xml报错的问题
- Java基础——LinkedHashMap源码分析
- 执行TestNG报java.net.SocketException: Software caused connection abort: socket write error错误
- 二叉树深度优先遍历、广度优先遍历、非递归遍历算法
- iOS逆向 error: use of undeclared identifier 'MSHookIvar'
- Lagom参考指南(四)
- java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener