1.屬性的存取特性
- readwrite,自動(dòng)創(chuàng)建存取方法,默認(rèn)特性
- readonly,只創(chuàng)建取方法
2.屬性的多線程特性
- atomic,使用鎖機(jī)制確保對(duì)該屬性的操作的原子性,默認(rèn)特性
- nonatomic,無原子性,所以速度會(huì)快一點(diǎn),建議使用的特性
3.屬性的引用相關(guān)特性
- strong,在進(jìn)行存操作時(shí),會(huì)持有傳進(jìn)來的對(duì)象,放棄原有對(duì)象,默認(rèn)特性
- weak,在進(jìn)行存操作時(shí),不持有傳進(jìn)來的對(duì)象,當(dāng)該對(duì)象被釋放時(shí),自動(dòng)賦為nil
- unsafe_unretained,與weak類似,只是對(duì)象被釋放后,不會(huì)自動(dòng)賦為nil
4.屬性的拷貝特性
- assign,在進(jìn)行存操作時(shí),直接賦值為傳進(jìn)來的變量,默認(rèn)特性
- copy,在進(jìn)行存操作時(shí),拷貝傳入的對(duì)象,該對(duì)象必須實(shí)現(xiàn)NSCopying協(xié)議的copyWithZone:方法,OC框架中,不可修改的對(duì)象一般僅僅返回self,并不會(huì)發(fā)生拷貝,因?yàn)閷?duì)不可修改的對(duì)象進(jìn)行復(fù)制沒有必要,而對(duì)于可修改對(duì)象,一般會(huì)返回對(duì)應(yīng)的不可修改對(duì)象,例如NSMutableString與NSString
5.屬性雖然幫我們完成了存取方法,但是我們也可以手動(dòng)實(shí)現(xiàn)存取方法來覆蓋自動(dòng)生成的存取方法,例如想要在存操作的時(shí)候更新下界面。但是這種情況下我們必須通過@synthesize創(chuàng)建實(shí)例變量(下劃線開頭的,原本會(huì)自動(dòng)生成的成員變量)
#import "TestClass.h"
@interface TestClass()
@property (nonatomic) NSString * name;
@end
@implementation TestClass
//合成實(shí)例變量
@synthesize name=_name;
-(NSString*)name
{
return _name;
}
-(void) setName:(NSString *)name
{
_name=name;
//更新界面
}
@end