IOS開發(fā)之@property的詳細(xì)介紹
IOS開發(fā)之@property的詳細(xì)介紹
在類中定義屬性時(shí),總會(huì)使用到@property進(jìn)行定義,下面就來說說@property的使用。
在使用過程中,如果需求公開且在其他類中使用時(shí),通常會(huì)定義在.h頭文件中;而如果只是該類自已需要使用,這時(shí)則會(huì)定義
在.m實(shí)現(xiàn)文件中。
使用格式
@property (參數(shù)1, 參數(shù)2, 參數(shù)3, ...) 參數(shù)類型 參數(shù)名稱
參數(shù)包括三個(gè)種類,七個(gè)屬性,如下圖所示。

在使用過程中,有幾點(diǎn)需要注意:
(1)原子性定義中,如果沒有涉及到多線程環(huán)境時(shí),通常不會(huì)使用默認(rèn)值atomic;
(2)讀寫屬性通過采用默認(rèn)值readwrite;
(3)set方法處理時(shí),需要針對(duì)不同的類型使用參數(shù),而不是全都使用默認(rèn)值;
(4)set方法處理時(shí),對(duì)于非對(duì)象參數(shù)類型,即基本數(shù)據(jù)類型,如int/float/double/BOOL等類型時(shí),采用assign;
(5)set方法處理時(shí),對(duì)于對(duì)象參數(shù)類型,如NSString/NSNumber/NSArray/…/NSDictionary等類型時(shí),采用retain/copy;
(6)在使用過程中,定義某個(gè)屬性后,系統(tǒng)會(huì)自動(dòng)生成setter/getter方法,但程序員可以根據(jù)需要修改setter/getter方法;
(7)同時(shí)會(huì)生成同名帶下劃線的成員變量,并在setter/getter方法中使用。
如,定義一個(gè)Person類的姓名、年齡:
使用默認(rèn)值進(jìn)行定義
@property age;
相當(dāng)于
@property (atomic, assign) int age;
通過采用非原子性的,即
@property (nonatomic, assign) int age;
對(duì)象類型的定義不能使用如下方式,因?yàn)樵撔问蕉x時(shí),是直接進(jìn)行賦值,會(huì)造成內(nèi)存泄露。
@property (nonatomic, assign) NSString *name;
正確的方式應(yīng)該使用retain/copy進(jìn)行定義
@property (nonatomic, retain) NSString *name;
默認(rèn)生成的setter/getter方法分別是
- (void)setAge:(int)age; - (int)age;
- (void)setName:(NSString *)name; - (NSString *)name;
如果在定義時(shí),重新定義了setter/getter方法,則系統(tǒng)默認(rèn)分成的setter/getter方法則無效了,使用時(shí),需要調(diào)用新定義的
@property (nonatomic, retain, setter = setMyName:, getter = getMyName) NSString *name;
此時(shí),使用時(shí)setter/getter方法為
- (void)setMyName:(NSString *)myName; - (NSString *)getMyName;
早期的Xcode版本中,@property 還會(huì)結(jié)合 @systhesize 來使用才會(huì)生成setter/getter方法,如
@property (nonatomic, assing) int age;
@systhesize age; // 或 @systhesize age = _age;
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
AVFoundation AVCaptureSession媒體捕捉
這篇文章主要為大家介紹了ios開發(fā)AVFoundation AVCaptureSession媒體捕捉詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
如何實(shí)現(xiàn)IOS_SearchBar搜索欄及關(guān)鍵字高亮
本文通過實(shí)例代碼演示如何實(shí)現(xiàn)IOS搜索欄及搜索關(guān)鍵字高亮,效果很棒,小編覺得對(duì)大家的學(xué)習(xí)會(huì)很有幫助,現(xiàn)在分享給大家,有需要的可以參考學(xué)習(xí)。2016-08-08
Objective-C基礎(chǔ) 自定義對(duì)象歸檔詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Objective-C基礎(chǔ) 自定義對(duì)象歸檔詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04

