iOS定义静态变量、静态常量、全局变量
来源:互联网 发布:淘宝上信誉最高的卖家 编辑:程序博客网 时间:2024/06/05 03:12
静态变量
当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量。
staticstatic
修饰的变量,是一个私有的全局变量。C
或者Java
中static
关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OC
中static
修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。static
修饰的变量必须放在@implementation
外面或方法中,它只在程序启动初始化一次。
static int num;
静态常量
constconst
修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用const
修饰。
static const NSTimeInterval LMJTimeDuration = 0.5;
如果试图修改TimeDuration
编译器则会报错。
如果我们定义一个字符串类型的静态常量就要注意了,这两种写法是一样的,而且是可以修改的。
static NSString const * LMJName = @"iOS开发者公会";static const NSString * LMJName = @"iOS开发者公会";
这两种写法cons
修饰的是* LMJName,
*
是指针指向符,也就是说此时指向内存地址是不可变的,而内存保存的内容时可变的。
所以我们应该这样写:
static NSString * const LMJName = @"iOS开发者公会";
当我们定义一个对象类型常量的时候,要将const
修饰符放到*
指针指向符后面。
全局变量
extern
extern修饰的变量,是一个全局变量。
extern NSString * LMJName = @"iOS开发者公会;
extern
修饰的变量也可以添加const
进行修饰:
extern NSString * const LMJName = @"iOS开发者公会;
此时全局变量只能被初始化一次extern
定义的全局常量的用法和宏定义类似,但是还是有本质上的不同的。extern
定义的全局常量更不容易在程序中被无意窜改。
链接:http://www.jianshu.com/p/aec2e85b9e84
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- iOS定义静态变量、静态常量、全局变量
- PHP 全局变量 局部变量 静态变量 常量
- 静态变量,extern,常量定义
- OC中的全局变量,静态全局变量,常量,静态局部变量
- 递归函数、全局变量、局部变量、静态变量、常量、指针变量
- 静态、常量、局部、全局变量
- Java基础(五)---局部变量、全局变量、静态变量、final变量、静态常量、静态方法
- 变量定义、变量声明、全局变量、静态变量、局部变量。
- ios的内存机制与静态变量,外部全局变量,常量总结
- C语言中定义变量的技巧(全局变量、局部变量、静态全局变量、静态局部变量)
- ios-全局变量和静态本地变量
- 全局变量、常量、程序代码、静态变量的位置关系
- 静态局部变量,静态全局变量
- 变量,常量,静态变量,静态常量
- 【c基础】全局变量-局部变量 静态变量static-自动变量auto 外部变量extern-内部变量static 常量const-宏定义#difine
- 局部变量,全局变量,静态全局变量
- 全局变量和静态变量
- 静态变量和全局变量
- windows下Maven环境搭建
- 网络协议:用户数据报协议(UDP)
- [leetcode]22. Generate Parentheses(Java)
- Eclipse下svn的创建分支/合并/切换使用
- RedHat 7.0 VMware Tools 安装
- iOS定义静态变量、静态常量、全局变量
- 关于之前修改输入框的问题追加
- 新学的一种qsort用法
- ReactiveCocoa应用篇(一)
- HTML/CSS/JavaScript自学方面汇总
- 区域周长问题
- Xshell-密钥登录
- Day2
- Reactor模式和Proactor模式