property和成员变量关系
声明一个数组:@property (nonatomic,strong)NSArray *array;
对数组进行懒加载,懒加载:也叫延迟加载,即在需要的时候才加载(效率低,占用内存小)。
- (NSArray *)array{
if(!_array){
_array = [NSArray array];
}
return _array;
}
在这里我们并没有定义_array这个成员变量,但却可以在懒加载中使用,只可能是在声明属性时生成的_array成员变量。
我们知道在用property声明属性时会自动生成getter和setter方法,即:
@property (nonatomic ,assign)int age;
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
若只声明一个属性age,不使用@synthesize实现:编译器会使用_age作为属性的成员变量(若没有定义成员变量_age则会自动生成一个私有的成员变量_age;若已经定义了成员变量_age则使用自定义的成员变量_age。若此时定义的成员变量不是_age而是age则此时会自动生成一个成员变量_age,它跟自定义成员变量age没有任何关系);
若声明了一个属性age,使用@synthesize进行实现,则_age = age.
参考博客地址:http://www.cnblogs.com/kenshincui/p/3861302.html#field
网友评论