摘要: KVO 并不是什么新事物,換湯不換藥,它只是觀察者模式在 Objective C 中的一種運用,這是 KVO 的指導思想所在。其他語言實現中也有“KVO”,如 WPF 中的 binding。而在 Objective C 中又是通過強大的 runtime 來實現自動鍵值觀察的。本文對 KVO 的使用以及注意事項,內部實現都詳細介紹了一番,對 KVO 的理解又深入一層了。Objective 中的 KVO 雖然可以用,但卻非完美,有興趣的了解朋友請查看《KVO 的缺陷》 以及改良實現 MAKVONotificationCenter 。 閱讀全文
11 2012 檔案
摘要: 如果我們在 Objective C 中向一個對象發送它無法處理的消息,會出現什么情況呢?根據前文《深入淺出Cocoa之消息》的介紹,我們知道發送消息是通過 objc_send(id, SEL, ...) 來實現的,它會首先在對象的類對象的 cache,method list 以及父類對象的 cache, method list 中依次查找 SEL 對應的 IMP;如果沒有找到且實現了動態方法決議機制就會進行決議,如果沒有實現動態方法決議機制或決議失敗且實現了消息轉發機制就會進入消息轉發流程,否則程序 crash。也就是說如果同時提供了動態方法決議和消息轉發,那么動態方法決議先于消息轉發,只有當動態方法決議依然無法正確決議 selector 的實現,才會嘗試進行消息轉發。在前文中,我并沒有詳細講解動態方法決議,因此本文將詳細介紹之。 閱讀全文
摘要: iOS 游戲開發教程資源,來自 http://www.raywenderlich.com 閱讀全文
摘要: 在前一篇《[深入理解C++(一)]類型轉換(Type Casting)》中,我詳細講述了 C++ 中轉型動作,以及使用規則。有網友說應該提及下《深度探索 C++ 對象模型》一書中的內容,其實他的意思是,要是對 C++ 對象的內存布局不甚了解,就想要徹悟C++中的類型轉型,對象切割,虛函數調用等,猶如脫離了堅實的根基,想去建空中閣樓。理解 C++ 對象的內存布局對學會 C++來說至關重要,但我不打算寫 C++ 對象的內存布局相關的文章,因為要站在前人的肩膀上,大牛陳皓 已經就這個主題寫了三篇圖文并茂的文章:
(一),C++ 虛函數表解析
(二),C++ 對象的內存布局(上)
(三),C++ 對象的內存布局(下)
在繼續閱讀本文之前,建議先閱讀這三篇文章,以更好地理解本系列文章。在接下來的內容中,我將從重載,重寫,屏蔽等概念入手,引入眾多接口繼承規則。 閱讀全文
(一),C++ 虛函數表解析
(二),C++ 對象的內存布局(上)
(三),C++ 對象的內存布局(下)
在繼續閱讀本文之前,建議先閱讀這三篇文章,以更好地理解本系列文章。在接下來的內容中,我將從重載,重寫,屏蔽等概念入手,引入眾多接口繼承規則。 閱讀全文