你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS學習 - Objective-c之property

iOS學習 - Objective-c之property

編輯:IOS開發綜合

Objective-c中通過屬性(property)可以為類聲明實例變量並實現相應的存儲方法,而且比用戶自己實現更簡潔。

一.屬性用法

用關鍵字property聲明屬性,語法形式為:@property (特性列表)類型 對象名;其中特性列表為可選項,如果無特性列表,例如,@property NSString itemName; 則默認特性為string, readwrite, nonatomic。編譯器自動生成了實例變量NSString *_itemName 和存儲方法- (void)setItemName:(NSString )name、- (NSString *)itemName。

表1 使用和不使用屬性的兩個等價類

  不使用屬性 使用屬性 CNTThing.h @interface CNTThing : NSObject
{
NSSTring * _name;
}
- (void)setName:(NSString *)n;
- (NSString *)name;
@end @interface CNTThing : NSObject
{
@property NSSTring * name;
}
@end CNTThing.m @implementation CNTThing

- (void)setName:(NSString *)n
{
_name = n;
}
- (NSString *)name
{
return _name;
}
@end @implementation CNTThing
@end


二.使用屬性應注意的問題
1.屬性的特性

@property (特性1,特性2,…)對象類型 對象名字;
其中特性有nonatomic, atomic, readwrite, readonly, strong, weak, copy等,nonatomic非原子操作,常用於界面元素,不用考慮線程安全,速度快。

2.自定義屬性

如果屬性自動生成的存取方法無法滿足要求可以自定義存取方法,自定義存取方法應注意一個問題,當全部的方法都自定義時,用戶需顯式定義屬性和變量。上例中如果用戶自定義了name和setName方法,則需要在CNTThing.m中添加”@synthesize name = _name;”告訴編譯器創建屬性和實例變量_name。用戶自定義了全部的方法也意味著假設name被聲明為只讀(readonly)屬性,用戶自定義了取方法,則需用“@synthesize”告訴編譯器生成對象和方法。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved