------- windows phone 7手機開發、.ios培訓、期待與您交流! -------
在前面寫的部落格中也寫到過@property,但是那時候寫的是最簡單的一種形式,也就是說當我們給乙個非oc物件設計setter與getter方法,例如給基本資料型別int、double、enum、struct設定setter與getter方法。可以寫成@property int age。但是今天這篇部落格,主要想寫一些關於給oc物件設定setter與getter方法時如何寫@property以及@property中的一些引數。
在寫@propety之前,我們先得明白哪些是oc物件哪些是非oc物件。一般來說基本資料型別,例如int、double、char、enum、struct等是非oc物件。一般使用組合關係的,例如car *_car,這個物件放在某個類中,那麼這個*_car是屬於oc物件。注意nsstring *_name,也是屬於oc物件。知道這個後,我們可以開始寫@property了。
例如:
main函式:
#import #import "student.h"
#import "pen.h"
int main()
student類的宣告與實現:
#import #import "pen.h"
@inte***ce student : nsobject
@property (nonatomic,assign,readwrite) int age;
@property (nonatomic,retain,readwrite) nsstring *name;
@property (nonatomic,assign,readwrite,getter = isrich) bool rich;
// @property (nonatomic,retain,readwrite) pen *pen; // 這條語句的詳細寫法的宣告如下:
- (void)setpen:(pen *)pen;
- (pen *)pen;
@end
#import "student.h"
@implementation student
// @property (nonatomic,retain,readwrite) pen *pen; 這條語句詳細寫法的的實現如下:
- (void)setpen:(pen *)pen
}- (pen *)pen
- (void)dealloc
@end
pen類的宣告與實現:
#import @inte***ce pen : nsobject
@end
#import "pen.h"
@implementation pen
- (void)dealloc
執行的結果為:
@property引數總結:
一、記憶體管理相關的引數
retain : release使舊值計數器減1,retain使新值計數器加1
assign :直接賦值(這是預設的,適用於非oc物件型別,例如基本資料型別,列舉、結構體也屬於基本資料型別)
copy : release使舊值計數器減1,copy使新值計數器加1
上面這三個引數只能寫乙個,不能寫成(retain,copy);
二、是否要生成set方法
readwrite:同時生成setter與getter的宣告和實現(這個是預設)
readonly:只會生成getter的宣告、實現
注意:setter方法為可讀可寫方法,getter方法為唯讀方法 ,讀(檔案->記憶體)寫(記憶體—>檔案)
三、多執行緒管理
nonatomic :效能高,(一般寫**時,都需要加上這個)
atomic : 效能低(預設的)
四、setter和getter方法的名稱(無所謂的預設值,可寫可不寫)
setter : 決定了setter方法的名稱,一定要有個冒號:
getter : 決定了getter方法的名稱(一般用在bool型別,將bool型別的getter方法改為isxx)
IOS開發 OC語言 property引數
檔名 person.h import 1.set方法記憶體管理相關的引數 retain release舊值,retain新值 適用於oc物件型別 assign 直接賦值 預設,適用於非oc物件型別 copy release舊值,copy新值 2.是否要生成set方法 readwrite 同時生成se...
OC中 property的所有屬性
1,assign 簡單賦值,不更改索引計數 假設你用malloc分配了一塊記憶體,並且把它的位址賦值給了指標a,後來你希望指標b也共享這塊記憶體,於是你又把a賦值給 assign 了b。此時a 和b指向同一塊記憶體,請問當a不再需要這塊記憶體,能否直接釋放它?答案是否定的,因為a並不知道b是否還在使...
OC中 property的所有屬性詳解
1,assign 簡單賦值,不更改索引計數 假設你用malloc分配了一塊記憶體,並且把它的位址賦值給了指標a,後來你希望指標b也共享這塊記憶體,於是你又把a賦值給 assign 了b。此時a 和b指向同一塊記憶體,請問當a不再需要這塊記憶體,能否直接釋放它?答案是否定的,因為a並不知道b是否還在使...