靜態變量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 為局部變量。