(2/18)重學Standford_iOS7開發_Xcode_課程筆記,xcode6ios7模擬器
第二課:
1、惰性初始化
1 -(ObjectType *)example2 {3 f(!_example) example =[[ObjectType alloc] init];4 5 return _example;6 }
直到使用前最後一刻才初始設定變數
2、數組字面量格式
@[a,b,c,…,m,n];
3、@synthesize
同時重寫屬性的setter與getter方法時,需要顯式合成,否則編譯器預設產生@synthesize example = _example;
4、類方法
1 +(ReturnType *)example2 {3 //不能在類方法中使用類屬性4 //作為Factory 方法使用5 //一般用於建立執行個體對象6 }
5、對象初始化方法
架構:
1 -(instancetype)init2 {3 self = [super init]4 if(self)5 {6 //自訂初始化內容7 }8 return self;9 }
指定初始化方法:
通常預設為公有API,即指定使用的初始化方法,其餘初始化方法中必須調用指定初始化方法來完成初始化。無文法格式,通常通過注釋說明。同理對一類方法有指定方法。
6、Xcode基本使用
略,詳見視頻或課件pdf
7、Outlet與Action
UI與Controller的連結,通過Ctrl+Drag實現。
IBAction實際上為void,供Xcode識別,編譯器自動忽略。
IBOutlet實際上為標記,供Xcode識別,編譯器自動忽略。
1 #define IBAction void 2 #define IBOutlet
8、NSLog()
C語言函數,用於在控制台列印輸出,可用於程式運行時的測試,
(作者說明:在實際編寫APP程式時我們並不直接使用NSLog()函數,因為APP打包編譯時間禁止NSLog()輸出,因此我們需要通過先行編譯在debug版使用NSLog(),而在release版取消NSLog()。可以在pch檔案或合適的地方插入如下代碼
1 #if DEBUG2 #define yourPrefixLog(...) NSLog(__VA_ARGS__)3 #else4 #define yourPrefixLog(...)5 #endif
然後在程式中需要列印輸出的地方可以直接使用yourPrefixLog()替換之前的NSLog()就行了。)
9、作業
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課程