IOS中的屬性修飾符

2021-06-23 05:02:29 字數 1027 閱讀 8158

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

2. retain,setter方法對引數進行release舊值再retain新值,所有實現都是這個順序.

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

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

所以不加nonatomic對於多執行緒是安全的 。 

其實,strong與weak是由arc新引入的物件變數屬性,後面新加的。

簡單講strong等同retain;weak比assign多了乙個功能,當物件消失後自動把指標變成nil,好處不言而喻。copy常用在

mutable子類。

什麼時候用

assign?

1. 基礎型別(簡單型別,原子型別):

nsinteger

,cgpoint

,cgfloat

,c資料型別(

int,

float

,double

,char等)

2. delegate

3. 子view儲存父view

什麼時候用

copy ?

含有可深拷貝的mutable子類的類,如

nsarray

,nsset

,nsdictionary

,nsdata

,nscharacterset

,nsindexset

,nsstring

(可深度拷貝的房子) 

但是nsmutablearray這樣的不可以,mutable的不能用copy,不然初始化會有問題。切記

什麼時候用

retain ?

其他nsobject

和其子類物件 (大多數)

iOS 屬性修飾符

1.讀寫性修飾符 readwrite readonly readwrite 表明這個屬性是可讀可寫的,系統為我們建立這個屬性的setter和getter方法。readonly 表明這個屬性只能讀不能寫,系統只為我們建立乙個getter方法,不會建立setter方法 2.setter相關修飾符 ass...

iOS 基礎 屬性修飾符

建立乙個索引數為一的物件,然後釋放舊物件。簡單賦值,不更改索引計數。arc 下預設模式,釋放舊物件,引用新物件,並使新物件的計數器加一。使用絕大部分 nsobject 物件。引用新物件,該物件的計數器不加一。表示這個屬性是唯讀的,只生成getter方法,不會生成setter方法。可讀可寫 預設 設定...

iOS之OC隨筆 屬性修飾符

記憶體管理一直是oc的重點內容,而屬性的記憶體管理從我們開始編寫第一句ios 就伴隨著我們,其重要程度可見一斑。下面是oc記憶體管理修飾符的總結,只是寫出最常用的幾個屬性的記憶體管理修飾符,適用範圍arc。簡單總結 基本資料型別用assign,物件用strong,和ui控制項用weak,字串用cop...