iOS @property 后面 修飾符


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和其子類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM