1. get/set 方法的線程管理
? ? atomic: 原子性(默認)乔外,對屬性的 get/set 方法加原子鎖床三。需要注意的是只對指針加了鎖, 也就是只有對屬性的 get/set 方法的操作是線程安全的杨幼;如果對象內(nèi)部進行數(shù)組的添加和移除元素补疑、字符串的拼接等操作是非線程安全的诊胞。
? ? nonatomic:? 非原子性迈着。只在主線程中使用時,涉及不到線程安全問題奴潘,建議使用画髓, 因為性能高。
2. get/set 方法的命名
? ? setter: 設(shè)置set 方法的名字匾鸥,注意需要加冒號(默認是set + 屬性名首字母大寫 + 冒號,eg: setName: )
? ? getter: 設(shè)置get方法的名字(默認是屬性名)
3. 是否需要生成 set 方法
? ? readwrite: 同時生成 get/set 方法(默認)
? ? readonly: 只生成 get 方法
4. 控制 set 方法的內(nèi)存管理
????MRC時代:? ??
? ? ? ? retain:? 強引用,release 舊值, retain?新值(只用于OC對象)
????????assign: (對對象來說弱引用)直接賦值,不做任何內(nèi)存管理账忘。(默認,可用于基本數(shù)據(jù)類型和對象,一般用于基本數(shù)據(jù)類型)
????????copy:??強引用,release 舊值, copy 新值(只用于OC對象, 一般用于 NSString 和 Block)
? ? ARC時代:
????????strong:代替retain
? ? ? ? weak: 代替 assign 修飾對象那部分