CS193P第二堂课摘要及心得笔记

CS193P第二堂课摘要及心得笔记

 

Stanford 大学所提供的 iPhone 开发课程,本学期开课到现在已经有一个多礼拜了,不知道大家是不是已经跟上 iPhone 开发学习的脚步了呢?这个礼拜我们将继续上一回的连载,跟大家分享第二堂课的上课笔记、心得。

在第二堂课中,主要有三个部份的内容,分别是物件导向的概念、Objective-C 语言的导览,和 Foundation Framework 的一些常用类别。

物件导向
CS193P第二堂课摘要及心得笔记

物件导向的三大重点:封装 、多型和继承 ,这部份的概念在大多数的语言,包含 Obj-C 都是相同的。碍于课程的设计,物件导向的基础概念在本课程中并没有多加描述,如果有疑惑的网友,或许可以参考网路上得一些资源、或是其他物件导向语言的相关书籍,必然都有涵盖到这些基础的内容。

而在 Objective-C 里面,所有的物件都会继承自 NSObject 这个物件。而透过继承了 NSObject 这个物件,记忆体管理的相关函式也会一起被继承下来,这在未来的开发中会扮演很重要的功能。

Objective-C 的特色

在上一堂课的笔记中,笔者曾经提过,Objective-C 是 C 语言的延展。相对于 C++而言,他有一些不同点:

这些相异的不同点,会在接下来的几堂课中逐渐被解释、示範。

讯息传递

Obj-C 透过了讯息的传递来让物件互相沟通,而我们在传递讯息之前,必须先定义讯息对应的方法,而针对类别和物件,以下为两种常见的方法定义:


-init;
+alloc;

正负号代表了是 class method 还是 instance method,而括号中的则是 method 的回传值,而 init 和 alloc 则是方法的名称。而如果我们要传递讯息给物件,则是透过下列的方式:


[receiver message];
[receiver message:argument];
[receiver message:arg1 andArg:arg2];

receiver 是讯息的接收者,而后面都是 message 的一部分。参数的传递则会放在冒号的后方。注意,"andArg" 也是方法名的一部分。

在投影片 39 到 42 张的部份有许多範例,可以参考、学习。

Objective-C 的型别

除了 C 语言本身的型别之外,在 Objective-C 当中又增加了 id、BOOL 和 SEL 型别。

id 型别是 Obj-C 中的一个特色,id 物件可以的内容可以是任何的物件,换句话说,也就是 dynamic typing。

而 BOOL 物件则是布林变数,内容可以是 YES 或是 NO。注意,不是 true 和 false,切记不要搞混了。在第 47 张投影片的部份有一些使用的範例。

而 SEL 物件则是类似像 C 语言的函式指标,可以指向任何一个 method,并作为以后讯息传递之用。而 NSObject 里面有几个相关的 methods,像是判断物件是否可以处理的:

- respondsToSelector:aSelector

或是像让物件执行 selector 所包含的 method:

- performSelector:aSelector

Foundation Classes

在基础架构中,我们曾经学过,Foundation Framework 有很多基本的类别可以使用,而在本堂课程中便介绍了以下几种:

而除了最后一项,其他的类别都有 Mutable 的版本,也就是可以在物件建立之后改变内容。举例来说,像是 NSArray 在物件建立之后就不能新增,而 NSMutableArray 则可以。

在课程的投影片 56 页之后,有很详细的範例解释各种类别的用法,也有介绍针对这些物件的列举方式。

iTunes U

最后顺道一提,本课程已经 在 iTunes U 上线 。透过 iTunes 订阅 iTunes U 课程,你就可以在每个礼拜第一时间从 iTunes U 上下载课程的录影、投影片,可以说是十分的方便!不过,作业和一些额外的档案下载,仍然要从课程网站上面下载,这点需要多加留意。

结语与预告

这次的课程内容可以算是相当充实,我相信大家应该已经对 Objetive-C 有了粗略的介绍。在下次的连载中,笔者将针对第一次作业的内容做讨论,在作业中有很多 Obj-C 的练习,若对于本次课程内容感到很手痒,这将会是个很好的机会!

参考资源
上一篇: 下一篇: