property引數講解

2022-07-02 21:39:17 字數 1991 閱讀 7626

一、property作用:

1、自動生成私有屬性

2、自動生成這個屬性的getter和setter方法的宣告;

3、自動生成這個屬性的getter和setter方法的實現;

注意:生成的setter方法的實現中,無論是什麼型別,都是直接賦值

二、property引數:

1、property是可以帶引數的  @property(引數一,引數二...);

2、property四組引數;

(1)與多執行緒c相關的兩個引數。

atomic、nonatomic

nonatomic:這個時候生成的setter方法的**就不會加安全鎖,效率高

(2)與生成setter方法實現相關的引數。

assign、retain

assign:預設值,生成的setter方法的實現就是直接賦值;

retain:生成的setter方法的實現 就是標準的mrc記憶體管理**,

也就是,先判斷新舊物件是否為同乙個物件;

如果不是就release,如果是就使用 ratain

當屬性的型別是oc物件型別的時候,就使用retain;

當屬性的型別是非oc物件型別的時候,就使用assign;

retain引數,只是生成標準的setter方法為標準的mrc記憶體管理**,不會自動的在dealloc中生成relase的**

所以,還要我們自己手動的在dealloc中release;

(3)與生成唯讀、讀寫相關的引數

readonyly.readwriter

readwriter:預設值,同時生成getter setter方法

readonly:只會生成getter不會生成seeter方法

(4)與生成的getter setter方法名字相關的引數

預設情況下:@propterty生成的getter和setter方法是最標準的

其實可以通過引數來制定@property生成的方法名

getter=ageget用來指定get方法的名字

setter=ageset:用來指定set方法的名字,後面必須加:冒號;

如果使用getter setter修改了生成f方法的名字。

如果在使用點語法的時候,編譯器轉化為修改後的名字的**

使用場景:如果使用boolear的時候,未了增加**的可讀性,可以加上is開頭

總結:1.與多執行緒相關的引數用nonatomic    預設natomic

2.於生成的setter方法相關的引數,      預設assign;

屬性的型別是oc物件 使用 retain

屬性的型別是非oc物件 使用assign

retain引數,只是生成標準的setter方法為標準的mrc記憶體管理**,不會自動的在dealloc中生成relase的**

所以,還要我們自己手動的在dealloc中release;

3.唯讀,讀寫

如果希望生成的封裝是唯讀封裝使用readonly

如果希望讀寫封裝,使用readwriter;  預設值

4.無論什麼情況都不要改setter

如果使用boolear的時候,未了增加**的可讀性,可以加上is開頭

總結:屬性的型別是oc物件 使用 retain(預設)

屬性的型別是非oc物件 使用assign

ui控制項使用uiimageview (weak)

字串nsstring用: (copy)

bool用:@property(nonatomic,assign,getter=isvip)boolvip;

nsintager等非oc用:@property(nonatomic,assign) nsintager number; 

nsarray和模型bean 用(strong)

property屬性引數

1.讀寫屬性 預設是readwrite,會生成getter和setter方法 如果是readonly表示只會生成getter方法 2.setter處理 預設是assign 賦值 因此基本資料型別不需要加這個引數。因為在setter方法裡,我們經常要將乙個物件賦值給類的成員屬性,這個時候根據記憶體管理...

引數檢查 property

繫結屬性時,如果直接把屬性暴露出去,雖然寫起來很簡單,但無法對引數進行檢查,導致屬性被隨便修改 因此,可以通過在類內定義get 獲取屬性值,定義set 對屬性值進行設定並對設定值進行檢查 但通過定義get 和set 會讓程式顯得複雜,沒有直接用屬性這麼直接簡單 python內建的 property裝...

property引數的作用

property是乙個屬性訪問宣告,擴號內支援以下幾個屬性 1,getter gettername,setter settername,設定setter與getter的方法名 2,readwrite,readonly,設定可供訪問級別 2,assign,setter方法直接賦值,不進行任何retai...