静态变量

当我们希望一个变量的作用域不仅仅是作用域某个类的某个对象,而是作用域整个类的时候,这时候就可以使用静态变量。

static
static修饰的变量,是一个私有的全局变量。
C或者Javastatic关键字修饰的变量,可以使用类名直接拿到这个变量对象,在其他类中可以进行修改。但是在OCstatic修饰的变量是不能通过类名直接访问的,它只作用于它声明所在的.m文件中。
static修饰的变量必须放在@implementation外面或方法中,它只在程序启动初始化一次。

static int num;

静态常量

const
const修饰的变量是不可变的,如果需要定义一个时间间隔的静态常量,就可以使用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定义的全局常量更不容易在程序中被无意窜改。

版权声明:出自MajorLMJ技术博客的原创作品 ,转载时必须注明出处及相应链接!

最新文章

  1. JS 模板引擎 BaiduTemplate 和 ArtTemplate 对比及应用
  2. 引用对象的使用和易产生bug的示例
  3. CSS3_02之2D、3D动画
  4. 歌词文件解析(二):LRC格式文件的绘制
  5. SU Demos-06Selecting Traces
  6. 纯CSS3画出小黄人并实现动画效果
  7. Spring中@Resource与@Autoware
  8. 对ArrayList 进行深拷贝
  9. 好的组件,无须太复杂 – KISSY Slide 组件简介
  10. dhtmlgrid修改,支持IE10
  11. 简单QT界面信号图形化输入输出
  12. SimpleDateFormat 的线程安全问题与解决方式
  13. ajax系列之用jQuery的ajax方法向服务器发出get和post请求
  14. Java互联网架构-直播互动平台高并发分布式架构应用设计
  15. BIM特点及格式文件说明
  16. Vue语法学习第二课——指令
  17. Mysql连接数、线程数、数据包
  18. java生成32的md5签名串
  19. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 1.操作系统环境配置
  20. Spark内存管理

热门文章

  1. Linux 查找一个函数在哪调用
  2. FastDFS分布式文件系统研究
  3. dns tunnel工具地址
  4. lightoj--1410--Consistent Verdicts(技巧)
  5. linux执行shell脚本时提示bad interpreter:No such file or directory的解决办法
  6. HDU4920 矩阵乘法
  7. vue-cli安装步骤
  8. HDU 3830 Checkers(二分+lca)
  9. 错误:java.lang.IllegalArgumentException: Receiver not registered
  10. Cacti部署之配置防火墙