1. 程式人生 > >OC中對於屬性的總結(@property)

OC中對於屬性的總結(@property)

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

  1. readonly:僅僅讀:
    設置之後,屬性就沒有setter,在設置了僅僅讀之後,就不能夠對成員變量進行改動了
  2. 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)