property和成員變量關(guān)系
聲明一個(gè)數(shù)組:@property (nonatomic,strong)NSArray *array;
對(duì)數(shù)組進(jìn)行懶加載,懶加載:也叫延遲加載,即在需要的時(shí)候才加載(效率低,占用內(nèi)存?。?。
- (NSArray *)array{
if(!_array){
_array = [NSArray array];
}
return _array;
}
在這里我們并沒(méi)有定義_array這個(gè)成員變量,但卻可以在懶加載中使用,只可能是在聲明屬性時(shí)生成的_array成員變量。
我們知道在用property聲明屬性時(shí)會(huì)自動(dòng)生成getter和setter方法,即:
@property (nonatomic ,assign)int age;
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
若只聲明一個(gè)屬性age,不使用@synthesize實(shí)現(xiàn):編譯器會(huì)使用_age作為屬性的成員變量(若沒(méi)有定義成員變量_age則會(huì)自動(dòng)生成一個(gè)私有的成員變量_age;若已經(jīng)定義了成員變量_age則使用自定義的成員變量_age。若此時(shí)定義的成員變量不是_age而是age則此時(shí)會(huì)自動(dòng)生成一個(gè)成員變量_age,它跟自定義成員變量age沒(méi)有任何關(guān)系);
若聲明了一個(gè)屬性age,使用@synthesize進(jìn)行實(shí)現(xiàn),則_age = age.
參考博客地址:http://www.cnblogs.com/kenshincui/p/3861302.html#field