iOS定义静态变量、静态常量、全局变量

静态变量

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

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
链接:http://www.jianshu.com/p/aec2e85b9e84
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值