2011斯坦福大學iOS應用開發教程學習筆記(第一課)MVC.and.Introduction.to.Objective-C

來源:互聯網
上載者:User

標籤:blog   http   io   color   ar   os   使用   sp   for   

2011年冬季斯坦福大學公開課 iOS應用開發教程是個很經典的教程,這個老頭講的很給力。做筆記總結。

第一課名稱: MVC and Introduction to Objective-C這課的主要內容有:

iOS的概述  -什麼是iOS

MVC - 物件導向的概念

Objective-C-介紹下語言的概念

iOS包括四層核心

核心是mach 4.x BSD UNIX核心 mac OS  10作業系統,是個多任務的UNIX核心,在這層上提供了網路,socket ,安全機制,檔案系統,大部分這些api是c api 因為這寫都是UNIX代碼。我們不會在這層上寫代碼。

 

Core Sevices層

這層開始物件導向了,提供了很多底層服務。提供運行時,多線程等。還有集合類,數組,字典啊。可以把這層當做提供了物件導向的Core OS的封裝。

 

 

多媒體層

好像離硬體更遠了,其實是還是很近, iPhone  iPod iPad都是多媒體裝置, 多媒體相關的代碼貫徹了整個iOS,在開發人員眼中 core services都是多媒體的api。 

 

Cocoa Touch 層

我們的 90%時間都用在這層, 按鈕,捲軸,各種控制項等。

介紹平台的組成:

工具: XCode 4   

語言:objective-c

Framework  foundation   UIKit 

設計模式

重點介紹下MVC三大陣營: model  view  controller 

model 

描述的是你的程式是什麼。比如一個太空船的程式,比如飛船的位置,型號,飛船有多少個機槍,護甲多少。

controller

描述你的是model如何展現在使用者面前,它擷取到了飛船在太空中的位置,然後算出來怎麼在螢幕上展現出來。比如飛船的多個機槍如何在螢幕上展現。總之controller控制如何在UI上展現model。

view 

是controller的小弟,view是工具。儘可能是view通用的,按鈕,捲軸等,決不能包含任何如何去表現的邏輯。controller用這些通用的view做model想要做的事情。

有了這三個陣營,剩下的就是他們之間管理和通訊了。

controller->model 完全允許。因為controller 要問model如何在螢幕展現內容。

controller->view  完全允許 。  通訊屬性outlet,在controller裡建立outlets傳輸到view中。

model---view  之間永遠不會通訊。因為model和介面沒有關係。view是要重用的,model和view關聯,當model改變後,view得重寫。

view->controller 通過 target action這個結構來通訊。controller自己畫了個 target(目標) ,然後把action(動作)交給view。當view發生一些事情,比如按鈕被按下,它把action 發送到target,這時候controller就知道了。view 和controller還有別的通訊機制,比如view要告訴controller發生什麼事情 ,將要發生什麼事情,或詢問是否允許,用到了will did should 。controller把自己設定成委託,用協議來完成委託。來回應will,did,should。這時候,view 還是不知道回應的controller是哪個類。

記住:views 不擁有它們展示的資料。

那view如何擷取資料呢?

通過協議擷取,delegation 方法,比如data at , count.

資料來源的delegation永遠是controller,不可能是model。 

三大陣營的工作流程是這樣的:controller去model那取資料,告訴view展現資料在螢幕上。即使只有一行代碼,也得有controller來參與,不能壞了規矩。

model不能主動勾搭controller,那model資料有變化了,那怎麼讓controller知道呢?Notification 或KVO機制。當model資料改變,它就廣播,controller就收到了。

MVC模式關係,請記住這張圖,後面講的課經常提到些關係:

mvc群:

當很多個model ,controller, view時,組成了mvc 群,還是要遵循上面的規則。

objective-c語言的基本概念。

objective-c是c的超集,import 的使用,@property替代了原來類裡的執行個體變數,當然執行個體變數也可以使用,@property幫你自動產生getter 和setter,@property之後就可以用點號 self.topSpeed訪問變數了,相當於[self topSpeed]

 

[cpp] view plaincopy
  1. @interface Spaceship()  
  2. ???// declaration of private methods (as needed)  
  3. @end  

通過這樣的方式聲明私人的方法。

 

個人感覺這裡講的文法不太利於國人理解,比較繁瑣。這裡講的objective-c類方面的之後可以參考: 

Objective-C文法之類和對象

可能更容易理解。視頻觀看地址:http://i.youku.com/u/UOTYxNjIxNTY=/videos蘋果官方視頻地址:https://itunes.apple.com/itunes-u/ipad-iphone-application-development/id473757255?mt=10斯坦福官方所有教程對應的源碼,作業,ppt:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall視頻中的ppt下載:http://download.csdn.net/detail/totogo2010/4798766

容芳志 (http://blog.csdn.net/totogo2010)

本文遵循“署名-非商業用途-保持一致”創作公用協議

2011斯坦福大學iOS應用開發教程學習筆記(第一課)MVC.and.Introduction.to.Objective-C

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.