Object C中的特性 property

2021-05-27 15:52:03 字數 1620 閱讀 8542

簡介: property組合了新的預編譯指令和新的屬性訪問器語法。

1、@property 表示宣告了物件的乙個屬性。例如: @property float smshandling; 表示某個類的物件具有了乙個float型別的名為smshandling的屬性。

property自動生成了 -setsmshandling 和 -getsmshandling兩個方法來操作屬性.

2、@synthesize 表示建立該屬性的訪問器(ps: -setsmshandling 和 -getsmshandling兩個方法是在這句存在的情況下才開始由編譯器輸出的).

3、property支援點訪問,比如:(假設擁有上面屬性的類為a)a.smshandling = 0.3 ;

4、property的擴充套件功能:(以上介紹的是property的基本用法)

我們還可以生命具有其他屬性的@property,用來表達我們希望特性具有某種行為的確切意願。

@property (copy) nsstring * name;//通過想name這個屬性新增copy的方法,使編譯器和類的使用者知道name物件將被複製。

關於屬性的括號內的擴充套件支援如下:

1,getter=gettername,setter=settername,設定setter與getter

的方法名

2,readwrite,readonly,設定可供訪問級

2,assign

,setter方法直接賦值,不進行任何retain操作,為了解決原型別與環循引用問題

3,retain

,setter方法對引數進行release舊值再retain新值,所有實現都是這個順序(cc上有相關資料)

4,copy, 

setter方法進行copy操作, 與retain處理流程一樣, 先舊值release, 再copy出新的物件, retaincount為1. 這是為了減少對上下文的依賴而引入的機制.

5,nonatomic, 非原子性訪問, 不加同步, 多執行緒併發訪問會提高效能. 注意, 如果不加此屬性, 則預設是兩個訪問方法都為原子型事務訪問. 鎖被加到所屬物件

以上的使用方式:

注:

retain的實際語法為:

-

(void

)setname:

(nsstring

*)newname

}

Posing 作為Object C語法的特性之一

posing 扮演 作為object c語法的特性之一。通過poseas方法來做到扮演的目的。扮演的作用 無需要定義子類物件和初始化,就可以通過父類扮演子類來操作 等價於子類的直接操作,類似父類轉子類 例子 import fraction.h inte ce fractionb fraction v...

Vue 理解非prop特性

所謂非 prop 特性,就是指它可以直接傳入元件,而不需要定義相應的 prop。儘管為元件定義明確的 prop 是推薦的傳參方式,元件的作者卻並不總能預見到元件被使用的場景。所以,元件可以接收任意傳入的特性,這些特性都會被新增到元件的根元素上。例如,假設我們使用了第三方元件bs date input...

Object c學習筆記十二 特性

前面我們在編寫的時候用到了set方法和get方法。在object c2.0中引入了特性 property 在標頭檔案中修改,用到關鍵字 property 可以看如下 property float rainhandling property float snowhandling void setrai...