這節課主要講了兩個東西:
1. iOS 概述
2. MVC 講解segmentfault
iOS 概述

iOS分爲四層,最底層爲Core OS,是一個Unix內核,也就是Mac OS 10。上層爲Core Services,即核心服務層,提供較爲面向對象的API,能夠把它當成是提供面向對象支持的Core OS的封裝。再上一層爲Media,提供多媒體API的支持。頂層爲Cocoa Touch,咱們開發應用時大部分都是在這層上進行。spa

- MVC包含三個部分(Model,View,Controller)。
- Model用來儲存數據,好比你有個打飛機的應用,那麼飛機的飛行高度、有幾個機槍、血量、飛行速度等這些數據都是存儲在此。要特別注意的是,Model不是用來處理UI的 ,好比飛機在屏幕的哪一個位置、飛機的形狀是怎樣的等等這些有關UI 的都與Model無關。Controller擁有訪問Model的全部權限,那麼它們之間是如何通訊的呢?這就用到了Notification&KVO(通知和關鍵數據監聽)機制,當Model裏的數據改變時(例如飛機受傷了致使血量降低),它就經過KVO機制進行廣播通訊,因爲Model是Controller的被觀察對象,因此當Model進行廣播時,Controller做爲觀察者就會接收到來自Model的信息,而後再告訴View要進行相應的UI處理。
- View就像Controller的僕人,它遵從Controller的指揮以用來處理UI。它們之間經過outlet進行通訊。target,Controller經過建立target接收來自View的action,好比View的控制條被滑動了或者button被點擊。View並不瞭解Controller的任何信息,它只簡單的與Controller進行通訊,那麼它們之間如何進行同步呢?上圖中的should、will、did就是用來告訴View應該作的、將要發生的和已經發生的,這麼作的緣由是Controller把本身設爲delegate(委託),這是另外一種通訊方式。還有一個重要的事是,View並非它顯示的數據的全部者,即View不擁有數據。若是View不擁有數據那麼它如何顯示數據呢?這就是另外一種相似delegate的通訊協議,例如上圖的data at和count方法。這就能夠去查詢表中的數據,好比個人iPod有1000首歌,而個人屏幕只能顯示其中的10首,View就能夠經過需求去請求數據,這很是高效。但不要把這功能寫到View中,由於View只顯示數據,Controller和Model一塊兒有效的提供數據。相似的,View有一個數據源的設置,即上圖的data source,Controller會迴應數據。注意:數據源的delegate永遠是Controller或Controller設置的第三方,但不多是Model。Controller的工做是把Model的數據傳遞給View,響應全部的delegate。Controller獲取Model而後顯示在屏幕上,Model和View之間不會進行通訊,這些工做都有Controller來執行。