Readwrite:表示該屬性可讀可寫,系統為我們創建該屬性的setter和getter方法。
Readonly:表示這個屬性只能讀不能寫,系統只為我們創建壹個getter方法,而不是setter方法。
2 .與setter相關的修飾符:賦值|保留|復制
與setter相關的修飾符指示應該如何實現setter方法。
賦值:表示直接賦值,用於基本數據類型(NSInteger和CGFloat)和C數據類型(如int、Float、double、char等。)和id類型。這個修飾符不涉及內存管理。但是,如果它是壹個對象類型,使用這個修飾符可能會導致內存泄漏或EXC _壞_訪問錯誤。
Retain:對象類型的內存管理。如果用於基本數據類型,Xcode會直接報錯。當這個修飾符用於壹個對象類型時,setter方法將首先釋放舊的對象屬性,然後分配壹個新的對象並執行保留操作。
Copy:主要用於NSString類型,表示復制的內容。
系統的默認屬性是assign。Retain是指針的副本,copy是內容的副本。
3.原子修飾語:原子|非原子
Atomic:表示線程安全。
Nonatomic:表示它是線程安全的,使用該屬性可以提高性能。
系統默認是原子的。
4.getter和setter修飾符
@property(getter = getMethodName,setter = set method name)Object * obj;
這兩個屬性修飾符用於設置自定義生成的getter和setter方法名,使用後將不再使用默認的setter和getter方法名。
@property修飾符中可以出現多個修飾符,用逗號分隔。但在上述修飾符中,1,2,3組中的屬性有壹個出現,只能同時出現4個。
Xcode4.2(iOS sdk4.3及以下)和之前的版本使用retain和assign。
Xcode4.3(iOS 5及以上)或更高版本對於ARC有強有弱。
賦值:用於非指針變量。用於基本數據類型(如NSInteger、CGFloat)和c數據類型(int、Float、double、char等。),以及id類型。
記住:如果不需要在前面加*就用assign。
Retain:用於指針變量。壹般用於NSString、NSMutableString)、array (NSMutableArray、NSArray)、dictionary對象、view對象(UIView)、controller對象(UIViewController)等。
強類似於保留,弱類似於分配。
最簡單的記憶:
對基本數據類型(如NSInteger、CGFloat)和c數據類型(int、Float、double、char等)使用assign:),也有id類型。
對NSString類型使用copy:。
使用retain:用於其他NSObject及其子類。