(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課程