靜態(tài)變量static
- 存儲(chǔ)在靜態(tài)區(qū);
- 初始化一次胁镐;
- 由系統(tǒng)管理;
- 生命周期為代碼運(yùn)行期間有效希停;
代碼位置:
- 可以修飾靜態(tài)局部變量也可以修飾靜態(tài)全局變量;
- 作用域?qū)?yīng)亚隙,靜態(tài)局部變量在方法內(nèi)有效/靜態(tài)全局變量在文件內(nèi)有效违崇;
“把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期阿弃。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域羞延,限制了它的使用范圍“槁幔”這句話(huà)的理解
在靜態(tài)局部變量中,函數(shù)(oc方法)運(yùn)行后嗤谚,局部變量還依然存在,他的生命周期在源程序退出后才結(jié)束巩步。如果是局部變量那么變量在函數(shù)運(yùn)行完,生命周期就結(jié)束了椅野;
在全局靜態(tài)變量中籍胯,更改了其使用的作用域离福,僅限其在所在的 .m 文件中才能使用,超過(guò)了這個(gè)作用域?qū)⒉荒茉L問(wèn)术徊,然而全局變量,在函數(shù)中赠涮,會(huì)被程序的其他源文件訪問(wèn)。
成員變量(實(shí)例變量笋除,屬性)、局部變量區(qū)別
//成員變量
@interface Person : NSObject
{
@public
NSString *_name;
BOOL _sex;
}
@end
_name,_sex便是成員變量也可以成為實(shí)例變量垃它,一般稱(chēng)實(shí)例變量.
//屬性
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) BOOL *sex;
該方法會(huì)自動(dòng)生成_name和_sex成員變量(實(shí)例變量),name国拇,age便是我們聲明的屬性。編譯器將屬性自動(dòng)轉(zhuǎn)換成了成員變量也殖,并且自動(dòng)生成了 getter 和 setter 方法。如果要對(duì)屬性的成員變量進(jìn)行訪問(wèn)需要使用 -> _name 訪問(wèn)忆嗜。
屬性和成員變量的最大的區(qū)別是,是否生成了 set 崎岂、get 方法。
//局部變量
- (void)test{
int age = 0;
age++;
NSLog(@"局部變量:%d",age);
}
作用域在方法中绩卤,age 為局部變量。