關於 property的用法

2021-06-21 22:59:31 字數 1672 閱讀 7808

功能:讓

編譯器自動編寫乙個與

資料成員同名的方法宣告來省去讀寫方法的宣告。

如:1、在標頭檔案中:

@property int count;

等效於在標頭檔案中宣告2個方法:

- (int)count;

-(void)setcount:(int)newcount;

2、實現檔案(.m)中

@synthesize count;

等效於在實現檔案(.m)中實現2個方法。

- (int)count

-(void)setcount:(int)newcount

以上等效的函式部分由

編譯器自動幫開發者填充完成,簡化了編碼輸入工作量。

宣告property的語法為:

@property (引數1,引數2) 型別 名字; 如:

@property(nonatomic,retain) uiwindow *window;

其中引數主要分為三類:

讀寫屬性: (readwrite/readonly)

setter語意:(assign/retain/copy)

原子性: (atomicity/nonatomic)

各引數意義如下:

readwrite

產生setter\getter方法

readonly

只產生簡單的getter,沒有setter。

assign

預設型別,setter方法直接賦值,而不進行retain操作

retain

setter方法對引數進行release舊值,再retain新值。

copy

setter方法進行copy操作,與retain一樣

nonatomic

禁止多執行緒,變數保護,提高效能

引數中比較複雜的是retain和copy,具體分析如下:

1、 @property(nonatomic,retain)test* thetest;

@property(nonatomic ,copy)test* thetest;

等效**:

-(test*)thetest

2、@property(retain)test* thetest;

@property(copy)test* thetest;

等效**:

-(void)thetest

1、

@property(nonatomic,retain)test* thetest;

@property(retain)test* thetest;

等效於:

-(void)setthetest:(test *)newthetest

}

2、@property(nonatomic,copy)test* thetest;

@property(copy)test* thetest;

等效於:

-(void)setthetest:(test *)newthetest

}

Python 中 property的用法

class person object definit self,name,age self.name name self.age age def get age fun self return self.age def set age fun self,value if not isinstanc...

關於property引數的理解

之前對於property的引數,一直是弄得雲裡霧裡的,不知道這些引數到底有啥用,最近學了記憶體管理,算是對它有了一點理解,我也來總結一下把。推薦看這篇文章之前先了解一下記憶體管理的基本知識ios記憶體管理初認識 首先,引數分三類 原子性 atomic nonatomic 預設是atomic atom...

python中property的用法詳解

1.property 應用場景 需要限制物件屬性的設定和獲取。比如使用者年齡為私有唯讀屬性,或者在設定使用者年齡的時候有範圍限制。這時就可以使用 property 工具,它把方法包裝成屬性,讓方法可以以屬性的形式被訪問和呼叫。2 用法 3 示例class user basemodel,db.mode...