iOS 屬性修飾符

2021-07-28 02:24:38 字數 1412 閱讀 3398

1.讀寫性修飾符:readwrite | readonly

readwrite:表明這個屬性是可讀可寫的,系統為我們建立這個屬性的setter和getter方法。

readonly:表明這個屬性只能讀不能寫,系統只為我們建立乙個getter方法,不會建立setter方法

2.setter相關修飾符:assign | retain | copy

setter相關的修飾符表明setter方法應該如何實現

assign:表示直接賦值,用於基本資料型別(nsinteger和cgfloat)和c資料型別(如int, float, double, char等)另外還有id型別,這個修飾符不會牽涉到記憶體管理。但是如果是物件型別,使用此修飾符則可能會導致記憶體洩漏或exc_bad_access錯誤

retain:針對物件型別進行記憶體管理。如果對基本資料型別使用,則xcode會直接報錯。當給物件型別使用此修飾符時,setter方法會先將舊的物件屬性release掉,再對新的物件進行一次賦值並進行一次retain操作

copy:主要用在nsstring型別,表示複製內容。

系統預設屬性是assign。retain是指標的複製,copy是內容的複製

3.原子性修飾符:atomic | nonatomic

atomic:表示是執行緒安全的。

nonatomic:表示是非執行緒安全的,使用此屬性效能會提高一些。

系統預設是atomic

4.getter和setter修飾符

@property(getter = getmethodname, setter = setmethodname) object *obj;

這兩個屬性修飾符用於設定自定義生成的getter和setter方法名,使用之後將不再使用系統預設的setter和getter方法名。

在@property修飾符中可以出現多個修飾符,分別用逗號分隔,但是,在上述修飾符中,1,2,3組中的屬性分別之恩那個出現乙個,只有4中可以同時出現。

assign:用於非指標變數。用於基礎資料型別(如nsinteger, cgfloat)和c資料型別(int, float, double, char等), 另外還有id型別。

記住:前面不需要加*的就用assign

retain:用於指標變數。一般用於字串(nsstring, nsmutablestring), 陣列(nsmutablearray, nsarray),字典物件,檢視物件(uiview),控制器物件(uiviewcontroller)等

strong類似於retain,weak類似於assign

最簡單的記憶:

使用assign:對基礎資料型別(如nsinteger, cgfloat)和c資料型別(int, float, double, char等), 另外還有id型別

使用copy:對nsstring型別

使用retain:對其它nsobject和其子類

iOS 基礎 屬性修飾符

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

IOS中的屬性修飾符

1.assign,setter方法直接賦值,不進行任何retain操作,為了解決原型別與環循引用問題.2.retain,setter方法對引數進行release舊值再retain新值,所有實現都是這個順序.3.copy,setter方法進行copy操作,與retain處理流程一樣,先舊值releas...

iOS之OC隨筆 屬性修飾符

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