OC中對於屬性的總結(@property)
阿新 • • 發佈:2017-06-17
sar 版本號 來講 ret ado ews -a sco retain
在沒有屬性之前:
對成員變量進行改動都要用到設置器:setter來改動
Person *per =[[Person alloc] init];
對象通過設置器對成員變量內容進行修該
[per setName:@"你好"];
要通過訪問器:getter來進行取值
屬性的出現 ,簡化了代碼
1.屬性
屬性是寫在.h中
在XCode4.5之後,屬性一共能夠做了三件事:
1.聲明了設置器:setter和訪問器:getter
2.實現了設置器和訪問器
3.聲明了一個成員變量,成員變量命名會在屬性名前面加一個下劃線
(總結)
詳細的數據存儲還是有成員變量來完畢,屬性值只是幫助程序猿完畢一些繁瑣的工作,簡化代碼
屬性用 @property 來表示
樣例:比方定義一個學生類的年齡對象
首先創建一個學生類,之後直接用屬性來創建年齡對象
在學生類的.h文件裏:
@property NSInteger age;
這樣一個年齡對象就建好了
一個屬性完畢了在對象.h中的聲明,完畢了setter,getter在.h中的聲明,完畢了setter,getter在.m中的實現三件事
2.屬性的屬性
(1) 讀寫的控制: readonly和readwrite
- readonly:僅僅讀:
設置之後,屬性就沒有setter,在設置了僅僅讀之後,就不能夠對成員變量進行改動了 - readwrite:讀寫:
能夠進行訪問與讀取
3.原子性的控制
在整個過程中系統通過原子性 atomic來監控實物在整個過程中偶遇沒有完畢,可是對於我們來講,我們僅僅是對數據進行簡單的賦值,一般我們都會用nanatomic,不進行監控
// 通過原子性atomic來監控實物在整個過程中有沒有完畢,可是一般來講我們就是對數據的簡單賦值,一般我們這部分用nonatomic
(atomic)
@property (atomic)NSString *sex;
(nonatomic)
@property(nonatomic)NSString *color;
4.語義設置
copy , assign , retain
1.retain一般用在對象類型, 比方我們自己寫的類,還有數組NSArray中會用到
2.assgin 一般用在NSInteger和CGFloat中,由於他們在棧區,不須要內存管理,所以用assgin
3.copy 一般僅僅會用在字符串中
樣例:
@property(nonatomic ,copy)NSString *color;
@property(nonatomic ,assign)NSInteger age;
@property(nonatomic ,assign)CGFloat score;
@property(nonatomic ,retain)NSArray *arr;
註意:
在XCode4.5版本號之前另一個關鍵詞的定義
[email protected]r和getter
格式 :關鍵詞 屬性名=成員變量名
@synthesize name = _name;
OC中對於屬性的總結(@property)