OC中的常量和变量

变量

变量就是初始化定义之后可以进行修改的实例对象.
变量又分为全局变量和局部变量.
不赋值的时候默认为0或者空值.
如:

1
2
3
Int a = 1;
a = 2;
Int b;
全局变量

1,函数外部进行声明.
2,可以跨文件进行访问.
3,可以在声明的时候进行赋值.
4,声明的时候,如果不赋值默认为空值.
5,存储的位置不是栈区也不是堆区,而是在专门:全局静态存储区.
6,程序启动就分配内存,直到程序结束才会释放;

局部变量

写在代码块或者函数之中;
作用域:从创建那一刻开始一直遇到大括号}或者return;
可以先定义再初始化,也可以在定义的时候初始化;
存储在栈区,由系统进行管理;
会在函数结束后释放;

成员变量

写在类声明的大括号内变量叫成员变量(也叫属性/实例变量)
不能再定义的时候进行初始化;
只能通过对象来进行访问;
存储于堆中(当前对象的堆对应的存储空间),需要程序员手动进行管理(引用计数);

常量

一旦定义,不能修改的实例.
使用const关键字进行修饰.
结合static和extern关键字来使用;

静态局部常量

写在代码块或者函数之中;
static修饰:静态局部常量
只会初始化一次,只有一份内存,延长变量或者常量的生命周期,直到程序结束才被销毁;

1
2
3
4
5
6
static NSString *const game1 = @"game1";  
//game1不可被修改, *game1可以被修改
static const NSString *game2 = @"game2";
static NSString const *game3 = @"game3";
//*game2和*game3不可被修改,他们是一样的
//game2和game3可以被修改;

const修饰的右边总是不能被修改;

全局静态常量

声明在函数外部
在类.h中声明可以被导入的类进行引用;
在类.m中声明则只能在该类中使用;

extern修饰全局常量

在.h声明:

1
extern float const age;

在.m中赋值

1
float const age = 10;

需要导入该类才能引用;

extern也可以修饰全局变量;