(1/18)重學Standford_iOS7開發_iOS概述_課程筆記,standford_ios7_ios

來源:互聯網
上載者:User

(1/18)重學Standford_iOS7開發_iOS概述_課程筆記,standford_ios7_ios

  寫在前面:上次學習課程對iOS還是一知半解,由於缺乏實踐,看公開課的視頻有時不能很好地領會知識。帶著問題去學習永遠是最好的方法,接觸一段時間iOS開發以後再來看斯坦福iOS公開課,又會有許多新的發現,對於已有的概念有了新的認識。這次課程筆記主要用作歸納知識點,整理學習思路,與大家討論課後習題,交流等。

  第一課:iOS概述

    1、iOS分層:①Core OS:核心作業系統層,基於UNIX核心(通訊端,檔案系統,電源管理,鑰匙串,Bonjour等)。API多為C函數,實際應用使用較少。

           ②Core Servers:核心服務層(數組,字典,字串,物件導向的檔案系統,多線程,GPS,資料庫等),使用較多。

           ③Media:媒體層(視頻,映像,音頻編輯等),使用較多。

           ④CocoaTouch:觸控應用程式層(控制項如按鈕,文字框等,互動動畫,本地化,相機,網頁瀏覽視圖等),使用較多。

    2、開發相關:①工具:Xcode

            ②語言:objective-C

            ③架構(framework):Foundation,CoreData,MapKit,UIKit,CoreMotion等

            ④設計模式:MVC(推薦),其他模式在後續課程中也會使用到,MVC貫穿始終。

    3、MVC設計模式:Model,View,Controller:一種將應用中的類組織起來的策略,所有的類將被分入這三塊之一。

              Model = What your application is (but not how it is displayed) 

              Controller = How your Model is presented to the user (UI logic) 

              View = Your Controller’s minions 

            如所示:

          通訊方式:①控制器(controller)直接操作模型(Model),可以直接使用其API

               ②控制器(controller)直接操作視圖(View),通過輸出口的方式(outlet),可以直接使用其API。

                 ③模型(Model)與視圖(View)之間禁止通訊。(模型完全獨立於UI)

               ④視圖(View)不能直接與控制器(Controller)通訊,而是通過以下間接方式:target-action(如按鈕,滑動條等),協議(委託(delegate)or 資料來源(dataSource)):protocol(如tableview等)。

               ⑤模型(Model)不能直接與控制器(Controller)通訊,而是通過通知機制(Notification)或者索引值觀察機制(KVO)來進行通訊。

          多MVC情況如所示:

            

    4、objective-C

      ①strong&weak:strong:只要有強指標指向對象,就在堆中保持這個對象,當不再有強指標指向對象時(nil),則對象會被釋放。

                weak:當沒有強指標指向對象時(可能還有弱指標指向對象),釋放對象。

      ②nonatomic:非原子性,表示此對象不是安全執行緒的,若為原子性會在屬性的setter和getter方法中加鎖,影響效能。

    5、原始碼

      Card.h

1 #import <Foundation/Foundation.h>2 3 @interface Card : NSObject4 @property (strong,nonatomic) NSString *contents;5 @property (nonatomic,getter=isChosen) BOOL chosen;6 @property (nonatomic,getter=isMacthed) BOOL matched;7 8 - (int)match:(NSArray *)otherCards;9 @endCard.h

 

      Card.m

1 #import "Card.h" 2 3 @interface Card() 4 5 @end 6 7 @implementation Card 8 9 - (int)match:(NSArray *)otherCards10 {11 int score = 0;12 13 for (Card *card in otherCards)14 {15 if ([card.contents isEqualToString:self.contents])16 {17 score = 1;18 }19 }20 21 return score;22 }23 24 @endCard.m

 

    6、作業:

 

課程視頻地址:網易公開課:http://open.163.com/movie/2014/1/M/7/M9H7S9F1H_M9H7TMJM7.html

       或者iTunes U搜尋standford課程

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.