六:理解對“屬性”這一概念
可以用@property語法來定義對象中的所封裝的數(shù)據(jù)
通過"特質"來制定存儲數(shù)據(jù)所需的正確語義
在設置屬性所對應的實例變量時斧吐,一定要遵從該屬性所聲明的語義。
開發(fā)iOS程序時應該使用nonatomic屬性靶病,因為atmoic屬性會嚴重影響性能
七:在對象內(nèi)部盡量直接訪問實例變量
在對象內(nèi)部讀取數(shù)據(jù)時会通,應該直接通過實例變量來讀,而寫入數(shù)據(jù)時娄周,則應通過屬性來寫涕侈。
在初始化方法及dealloc方法中,總是應該直接通過實例變量來讀寫數(shù)據(jù)
有時會使用惰性初始化技術配置某份數(shù)據(jù)煤辨,這種情況下裳涛,需要用過屬性來讀取數(shù)據(jù)。
八:理解"對象等同性"這一概念
若想檢測對象的等同性众辨,請?zhí)峁?isEqual:"和"hash"方法
相同的對象必須具有相同的哈希碼端三,但是兩個哈希碼相同的對象卻未必相同。
不要盲目地逐個檢測每條屬性鹃彻,而是應該依照具體需求來制定檢測方案
編寫hash方法時郊闯,應該使用計算速度快而且哈希碼碰撞幾率低的算法
九:以"類族模式"隱藏實現(xiàn)細節(jié)
類族模式可以把實現(xiàn)細節(jié)隱藏在一套簡單的公共接口后面
系統(tǒng)框架中經(jīng)常使用類族
從類族的公共抽象基類中繼承子類時要當心,若有開發(fā)文檔,則應首先閱讀
10:在既有類中使用關聯(lián)對象存放自定義數(shù)據(jù)
可以通過"關聯(lián)對象"機制來把兩個對象連起來
定義關聯(lián)對象時可指定內(nèi)存管理語義团赁,用以模仿定義屬性時所采用的“擁有關系”與非擁有關系"
只有在其他做法不可行時才應選用關聯(lián)對象育拨,因為這種做法通常會引入難于查找的bug。