一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量)
成员变量不可离开类 离开了类就不是成员变量
成员变量不能再定义的同事初始化
成员量只能通过对象来访问
成员变量存储在堆中(当前对象对应的堆得存储空间中) 不会被系统自动释放 只能有程序员手动释放
二.局部变量 :写在代码块或函数中的变量为局部变量
局部变量的作用域 : 从定义的那一行开始,一直到遇到大括号或return(也就是这个变量所在的代码块或函数结束时)
局部变量可以先定义后初始化,也可以在定义的同时就初始化
局部变量存储在栈里面 系统会自动释放
三.全局变量 : 卸载函数外或大括号外的变量就是全局变量
全局变量的作用域 : 从定义哪行开始 到文件末尾
全局变量可以先定义再初始化,也可以定义的同时初始化
全局变量存储在静态区中 程序启动时就会分配存储空间 直到程序结束才会释放
#import "SFViewController.h" int instance2;//这叫全局变量 可以外部文件引用 static int instance3 = 20;//这叫全局变量(仅仅本类使用) @interface SFViewController () //@property (nonatomic ,copy)NSString *instance5;这也叫成员变量 { NSString *instance1;//这叫成员变量 } @end NSString *instance;// 这也叫全局变量 @implementation SFViewController { NSString *instance4;//这也叫成员变量 }
//ps: h文件成员变量定义逻辑 同m中.
ps: oc不支持 .h文件中定义全局变量 (个人猜测:头文件经常被引用,容易引起重复定义)