《Objective-C 2.0编程语言》.pdfVIP

  • 10
  • 0
  • 约5.19万字
  • 约 46页
  • 2015-11-01 发布于河南
  • 举报
《Objective-C 2.0编程语言》.pdf

Objective-C 2.0 编程语言 简介 面向对象的开发环境至少会包含以下三个要素: ■一个支持库的面向对象的编程语言 ■一个内容丰富对象库 ■一系列的开发工具 本文档是关于这种面向对象开发环境的第一要素的,即编程语言及其运行时环 境。此文全面介绍Objective-C 编程语言,这也是学习第二要素的基础,以及学习 基于Mac 操作系统,使用Objective-C 编写的应用程序框架的基础。这种应用程 序框架以Cocoa 而闻名遐迩,开发Mac 和iPhone 应用程序的两个主要工具是 Xcode 和Interface Builder 。 Objective-C 是一种简单的计算机语言,但对复杂的面向对象编程方法却能自如应 对,它实际上是对ANSI C 标准语言的一个小小的扩充,但这种扩充却使它变得相 当强大。它对C 语言的扩充都是基于Smalltalk 的——最古老的面向对象编程语言 之一。Objective-C 的设计目的是给C 语言一个通过一种简单且直观的方式而实现 面向对象编程的能力。 此文档主要介绍面向对象的编程模型,这也是Objective-C 的根基,它集中介绍 Objective-C 对C 语言的扩展,而不是C 语言本身。使用Objective-C 的面向对象 的编程和使用ANSI C 的面向过程的编程有着很大的差异。 对象和类 对象 面向对象的程序都是围绕对象而构建。一个对象把数据和一些对这些数据的操作 捆绑在一起,这些操作被称为方法(Methods),而它们操作的那些数据被称为实例 变量(instance variables)。 在Objective-C 中,对象的实例变量属于对象的内部数据,通常要访问这些数据只 能通过对象的方法,还可以通过作用域指示符(scope directives)为一个类的子类或 别的对象指定访问实例变量的权限。就像一个函数隐藏局部变量一样,对象不但 隐藏实例变量,还会隐藏方法的实现。 Id 类型 在Objective-C 中,对象变量是一种独特的数据类型——id 类型。这种类型被定义 为指向对象的指针。实际是一个指向这种对象的实例变量的指针。就像C 语言中 的函数和数组一样,对象也是用地址来表示的,所有对象,不管它们的实例变量 或方法是什么,都属于一种类型——id 类型。 id anObject; 在Objective-C 中,id 取代了int 类型成为默认的数据类型(在标准C 里,如函数的 返回值,int 是默认的返回类型),关键字nil 被定义为空对象,也就是值为0 的对 象,Objective-C 其它的基本类型都在obj/objc.h 中定义。 动态类型匹配 id 类型是一种灵活的数据类型,除了指示它是一个对象外,并不能提供更多信 息。对象并不会完全相同,一个Rectangle 对象不会和一个表示位图的对象有相同 的实例变量和方法,有时程序可能需要一个对象的更多确切信息,如它包含那些 实例变量,可以执行那些操作等。但id 指示符却不能为编译器提供这方面的信 息,所以每个对象在运行时必须提供这些信息。能够做到这一点都是因为每个对 象都有一个isa 实例变量来标示这个对象所属于的类。所有的实例变量和方法都相 同的对象都是同一个类的成员。因此,动态类型匹配实际上发生在程序被执行 时。不论何时,只要需要,运行时系统就能够查明一个对象到底属于哪个类,而 这只需要查询对象的isa 实例变量就可以了。这个isa 指针还为对象提供了一种称 为“ 自省”(introspection)的功能。编译器会在数据机构中记录关于类定义的信息为 运行时环境所用。通过这种机制,可以判断一个对象是否提供了一个特定的方 法,也可以获取这个对象的super 类(supperclass)的名字。当然也可以通过静态类 型匹配为编译器提供有关对象所属类的信息,类名也可以作为类型名使用。 对象消息 消息语法 要让对象做些事情,必须向它发送消息,告诉它去执行一个方法。 在Objective-C 中,消息表达式被包含在一对中括号里: [receiver message] Receiver 是一个对象,而message 告诉这个对象要做什么,具体到代码里,消息就 是方法名字和传给这个方法的一些参数。一旦一个消息发出,运行时系统会为这 个对象选择正确的方法并启动它。 带有可变数量的参数也是可能的,其余的参数用逗号隔开,在下面的例子中, 这个方法传入一个必要参数group 和三个可选参数: [receiver makeGroup: group, memberOne, memberTwo,

文档评论(0)

1亿VIP精品文档

相关文档