第二课: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课程