国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS開發之@property的詳細介紹

2019-10-21 18:44:45
字體:
來源:轉載
供稿:網友

IOS開發之@property的詳細介紹

在類中定義屬性時,總會使用到@property進行定義,下面就來說說@property的使用。

在使用過程中,如果需求公開且在其他類中使用時,通常會定義在.h頭文件中;而如果只是該類自已需要使用,這時則會定義

在.m實現文件中。

使用格式

@property (參數1, 參數2, 參數3, ...) 參數類型 參數名稱

參數包括三個種類,七個屬性,如下圖所示。 

IOS,@property,@property的詳解,@property詳解

在使用過程中,有幾點需要注意:

(1)原子性定義中,如果沒有涉及到多線程環境時,通常不會使用默認值atomic;
(2)讀寫屬性通過采用默認值readwrite;
(3)set方法處理時,需要針對不同的類型使用參數,而不是全都使用默認值;
(4)set方法處理時,對于非對象參數類型,即基本數據類型,如int/float/double/BOOL等類型時,采用assign;
(5)set方法處理時,對于對象參數類型,如NSString/NSNumber/NSArray/…/NSDictionary等類型時,采用retain/copy;
(6)在使用過程中,定義某個屬性后,系統會自動生成setter/getter方法,但程序員可以根據需要修改setter/getter方法;
(7)同時會生成同名帶下劃線的成員變量,并在setter/getter方法中使用。

如,定義一個Person類的姓名、年齡:

使用默認值進行定義

@property age;

相當于

@property (atomic, assign) int age;

通過采用非原子性的,即

@property (nonatomic, assign) int age;

對象類型的定義不能使用如下方式,因為該形式定義時,是直接進行賦值,會造成內存泄露。

@property (nonatomic, assign) NSString *name;

正確的方式應該使用retain/copy進行定義

@property (nonatomic, retain) NSString *name;

默認生成的setter/getter方法分別是

- (void)setAge:(int)age;- (int)age;
- (void)setName:(NSString *)name;- (NSString *)name;

如果在定義時,重新定義了setter/getter方法,則系統默認分成的setter/getter方法則無效了,使用時,需要調用新定義的

@property (nonatomic, retain, setter = setMyName:, getter = getMyName) NSString *name;

此時,使用時setter/getter方法為

- (void)setMyName:(NSString *)myName;- (NSString *)getMyName;

早期的Xcode版本中,@property 還會結合 @systhesize 來使用才會生成setter/getter方法,如

@property (nonatomic, assing) int age;
@systhesize age;// 或@systhesize age = _age;

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 车致| 淮阳县| 扬中市| 广宁县| 特克斯县| 饶阳县| 河北区| 江津市| 深圳市| 沭阳县| 芮城县| 启东市| 神池县| 康平县| 房山区| 安塞县| 大竹县| 栖霞市| 奈曼旗| 游戏| 舒城县| 灌云县| 岳池县| 平定县| 那坡县| 肃北| 上饶市| 吉隆县| 高雄县| 扎赉特旗| 武山县| 长乐市| 新竹市| 永昌县| 常德市| 永嘉县| 浪卡子县| 双鸭山市| 吉木乃县| 长治市| 张家港市|