转载

(2/18)重学Standford_iOS7开发_Xcode_课程笔记

第二课:

1、惰性初始化

1 -(ObjectType *)example 2 { 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 *)example 2 { 3     //不能在类方法中使用类属性 4     //作为工厂方法使用 5     //一般用于创建实例对象 6 }

5、对象初始化方法

框架:

1 -(instancetype)init 2 { 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 DEBUG 2 #define yourPrefixLog(...) NSLog(__VA_ARGS__) 3 #else 4 #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课程

正文到此结束
Loading...