第二課:html
一、惰性初始化git
1 -(ObjectType *)example 2 { 3 f(!_example) example =[[ObjectType alloc] init]; 4 5 return _example; 6 }
直到使用前最後一刻才初始化變量github
二、數組字面量格式數組
@[a,b,c,…,m,n];框架
三、@synthesize函數
同時重寫屬性的setter與getter方法時,須要顯式合成,不然編譯器默認生成@synthesize example = _example;測試
四、類方法spa
1 +(ReturnType *)example 2 { 3 //不能在類方法中使用類屬性 4 //做爲工廠方法使用 5 //通常用於建立實例對象 6 }
五、對象初始化方法debug
框架:code
1 -(instancetype)init 2 { 3 self = [super init] 4 if(self) 5 { 6 //自定義初始化內容 7 } 8 return self; 9 }
指定初始化方法:
一般默認爲公有API,即指定使用的初始化方法,其他初始化方法中必須調用指定初始化方法來完成初始化。無語法格式,一般經過註釋說明。同理對一類方法有指定方法。
六、Xcode基本使用
略,詳見視頻或課件pdf
七、Outlet與Action
UI與Controller的連接,經過Ctrl+Drag實現。
IBAction實際上爲void,供Xcode識別,編譯器自動忽略。
IBOutlet實際上爲標記,供Xcode識別,編譯器自動忽略。
1 #define IBAction void 2 #define IBOutlet
八、NSLog()
C語言函數,用於在控制檯打印輸出,可用於程序運行時的測試,
(做者說明:在實際編寫APP程序時咱們並不直接使用NSLog()函數,由於APP打包編譯時禁止NSLog()輸出,所以咱們須要經過預編譯在debug版使用NSLog(),而在release版取消NSLog()。能夠在pch文件或合適的地方插入以下代碼
1 #if DEBUG 2 #define yourPrefixLog(...) NSLog(__VA_ARGS__) 3 #else 4 #define yourPrefixLog(...) 5 #endif
而後在程序中須要打印輸出的地方能夠直接使用yourPrefixLog()替換以前的NSLog()就好了。)
九、做業
a.使用Xcode建立 Matchismo 工程
b.建立並輸入以前的4個objective-C類:Card,PlayingCard,Deck,PlayingCardDeck
c.爲ViewController添加一個Deck類的私有屬性
d.使用惰性初始化上面的屬性,將Deck初始化爲含有PlayingCard的牌堆
e.實現每次點擊牌堆隨機翻出牌堆中某張牌
f.不能破壞原有的函數結構
詳見https://github.com/NSLogMeng/Stanford_iOS7_Study_Machismo(這次做業答案爲課程公佈正確答案,後續課程做業無標準答案,做者僅以我的理解解答,歡迎指正)
課程視頻地址:網易公開課:http://open.163.com/movie/2014/1/H/R/M9H7S9F1H_M9H7V38HR.html
或者iTunes U搜索standford課程