静态变量static
- 存储在静态区;
- 初始化一次;
- 由系统管理;
- 生命周期为代码运行期间有效;
代码位置:
- 可以修饰静态局部变量也可以修饰静态全局变量;
- 作用域对应,静态局部变量在方法内有效/静态全局变量在文件内有效;
“把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。”这句话的理解
在静态局部变量中,函数(oc方法)运行后,局部变量还依然存在,他的生命周期在源程序退出后才结束。如果是局部变量那么变量在函数运行完,生命周期就结束了;
在全局静态变量中,更改了其使用的作用域,仅限其在所在的 .m 文件中才能使用,超过了这个作用域将不能访问,然而全局变量,在函数中,会被程序的其他源文件访问。
成员变量(实例变量,属性)、局部变量区别
//成员变量
@interface Person : NSObject
{
@public
NSString *_name;
BOOL _sex;
}
@end
_name,_sex便是成员变量也可以成为实例变量,一般称实例变量.
//属性
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) BOOL *sex;
该方法会自动生成_name和_sex成员变量(实例变量),name,age便是我们声明的属性。编译器将属性自动转换成了成员变量,并且自动生成了 getter 和 setter 方法。如果要对属性的成员变量进行访问需要使用 -> _name 访问。
属性和成员变量的最大的区别是,是否生成了 set 、get 方法。
//局部变量
- (void)test{
int age = 0;
age++;
NSLog(@"局部变量:%d",age);
}
作用域在方法中,age 为局部变量。