属性是OC(Objective-C)的一项特征,就像人的某一项特征。
这个是基于OC是面向对象的语言,万物皆对象。这也就很好理解了。
@property (nonatomic, strong) UILabel *label;
就相当于声明了label 这个属性,并且实现了他的setting和getting方法。
@synthesize label = _label;
-(UILabel *)label;
-(void)setLabel:(UILabel *)label;
属性有什么特征:
1、原子性与非原子性
原子性(atomic)在读与写属性的时候加了同步锁,只有所以进程都完成才算完成,否则,滚动回原来位置。
非原子性(nonatomic)与原子性相反,不加同步锁。
2、取值与赋值
getter方法:取值方法
setter方法:赋值方法
3、内存管理
assign:简单的赋值操作,如:NSInteger,GCFloat,Bool
strong:强引用关系,当引用的对象消失,它才会消失,设置方法,保留新值,并且释放旧值。
weak:弱引用关系,设置方法 不保留新值,不释放旧值,当指针指向的对象销毁时,指针置nil,产生了空指针。
copy:有深拷贝与浅拷贝,浅拷贝只是拷贝值,并没有拷贝指针。深拷贝不但拷贝值,也拷贝指针,相当于真正复制一份出来
4、读写属性
readwrite:拥有读写属性
readonly:只读属性