可以知道上次寫的是什麼時候...
不過沒有辦法動手寫,只能看,真的是一個很讓人手癢的事情@@
不要看我可以過得好一點XD
現在有弄到了一個可以編譯的環境了,所以可以動手做了!於是我又開始看上課內容了!
希望這次可以不懈一點.....
以下這些筆記都是觀看來自於Standford on iTunes的上課講義和來自IPA程序員的熱心人轉的翻譯影音檔。謝謝你們讓我比較好瞭解。
=================前言結束=================
- MVC, 在iOS中最重要的觀念:
- Model: What your application is (but not how it is displayed)
他只在意他本身的資訊、位置....之類的 - Controller: How your Model is presented to the user (UI logic)
這個就是要處理如何把資訊顯示出來,像iPad的螢幕比較大,所以他可以有好幾個windows在那邊,但iPhone的螢幕較小,通常只能有一個window存在。而Controller就是一個特殊的管理平台。 - View: Controller用來顯示的東西。
他們是可重複使用的物件好讓Controller來完成他們的工作。也就是讓Model來呈現在螢幕上。
但是view並不擁有需要顯示的數據。 - view是通用的(generic):所以不用管理那些data。所以若是需要顯示的話,view會發出請求來問data是什麼。
- 效率問題:因為像iphone螢幕小,data雖多但不能全部顯示,由view管理也是沒用。
- 在controller那邊有個東西叫做data source的資訊中心。而view會根據自己要顯示的數量多寡來跟data source來要求數據。
- 雖然不太希望View可以主動跟Controller對話,但為了方便,仍有三個主要方法 可以達到:
- target action:controller 掛一個target在他的窗口上,並把action掛在view裡面。而一旦view察覺到action已經被觸發後,就會將這個action射向target,通知controller這個action已經啟動。而此時接收者也能送一些訊息給發送者詢問一些事情。
- Delegation:view會問某些人關於"should, will, did"等等的問題。這是三個主要問題,但也是有其他的message可以委任出去。作法是在controller內某個物件跟view講:我要作你的委任(delegation),而view根本不需要這個物件是誰,在哪個類別中。view只要知道他是一個委任,可以解答view的疑惑。而每個view只能有一個delegate。除非你將他分類,哪些疑惑給某個delegate,哪些疑惑給另外一個delegate之類的。
- 而Model可以跟Controller主動交談嗎? 不行!因為Controller的所有東西都是UI,但Model內的東西跟UI完全沒關係。但有時候Model的確要跟Controller講事情:
- Notification and KVO(Key Value Observing):也就是允許物件去作廣播(Notification)的變更的通知,包含什麼物件和變更為何。Controller有一根無線電接收器一直在接收Model廣播出來的訊息,再做回應。
- 在iOS App中,不會只有一個MVC,而是有很多MVC互相牽引。但我們不會希望他們很混雜,所以我們必須確認這個物件的功能,進而訂出交互接口。 不會將錯誤的code寫進錯誤的模組當中。
- 其中view是最重要注重generic的所以要考慮他的reusable。所以可以給其他的app用。
- iOS沒有回收機制,所以必須自己作。
| 溝通的路徑 |
沒有留言:
張貼留言