功能:讓
編譯器自動編寫乙個與
資料成員同名的方法宣告來省去讀寫方法的宣告。
如: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...