ios应用开发Objective-C入门教材 |
||||||||
Objective-C是一种 方便的计算机语言,它 可以用来设计复杂的面向对象程序 。 Objective-C 扩大了 标准ANSI C语言,添加了一些定义类、 步骤以及其它 构造的语法, 晋升了类的动态 扩大 。 重点: 本文档没有 传授任何有对于C语言的 常识 。假如你还不 相熟C语言,浏览本文之前应该学习一下C语言的 根底 常识 。 假如你已经 相熟C语言,而且之前 使用过面向对象语言编写过程序,下面的内容将会协助你学习Objective-C的 根底语法 。 许多传统面向对象的 思维, 比方封装、继承、多态,都会在Objective-C中体现 。 固然也有一些主要的不同点,但这些不同点都会在这篇文章中提到,假如需求有更多 详尽信息可用 。 Objective-C: C语言的超集 Objective-C是C语言ANSI版本的超集, 支撑和C 雷同的 根本语法 。用C代码,你 可以定义头文件和源码文件, 以从 详尽实现的代码中 拆散出公开的申明 。 Objective-C头文件下面列出的 扩大名 Table 1-1. Table 1-1 Objective-C代码的文件 扩大名 扩大名文件类型
当你想在你的代码中包括头文件时,你 可以 使用 #import 指令 。 它 比较像 #include, 除了它必须要确定 雷同文件不能被包括 频繁 。 Objective-C的示例和文档都更喜爱 使用 #import, 你的代码应该也这样 。 类 和大多数其它面向对象语言一样,Objective-C里的类也提供 根本的 构造,用来封装带有行为的一些数据 。 一个对象是一个类的运行实例,包括类中申明变量的实例在内存中的复制,以及指向该类的 步骤 。 Objective-C中类的定义,要求两个显而易见的 部分:接口和实现 。 接口 部分包括类的申明、定义成员变量,及与此类关联的 步骤 。 接口通常在a .h 文件里 。实现 部分包括类的 步骤实际代码 。实现通常在 a .m 文件里 。 图1-1 展示申明MyClass类的语法, 它继承自Cocoa的基类 NSObject 。 这个类的申明开始于 @interface 编译指令, 完毕于 @end 指令 。仅跟着类名的(以冒号分割)是父类名 。 类的实体变量(有时简称ivars,在一些其它语言中称作成员变量)申明在以大括号({和})括起来的代码块中 。 实体变量后面是类的 步骤申明列表 。以分号做为每个实体变量和 步骤的 完毕标记 。 图1-1 定义一个类 小 揭示: 这个接口只申明了 步骤,类也 可以申明 属性 。 了解属性的更多信息, 请查看 “申明属性”. Objective-C 支撑包括对象的强弱两个类型的变量 。 在变量申明时,强类型的变量包括类名,弱类型的变量 使用类型 id 接替对象 。 弱类型变量在像 集中类中 使用频繁,在一个 集中中的对象的实际类型可能是未知的 。假如你 使用过强类型的语言, 你可能会认为 使用弱类型会引起问题,然而在Objective-C程序中它们实际上提供了很大的灵便性和更 壮大的动态性 。 下面的例子 展示了强类型和弱类型变量的申明 格局:
留神在第一个申明里的 * 号 。在Objective-C中,对象的 引用叫指针 。假如你对指针没有很清楚的 意识, 不用 担心,不是必须要成为一个指针专家 威力 使用Objective-C进行编程的 。你 惟独记住在申明强类型对象的变量名前外加 * 就 可以了 。 弱类型 id 本身就 象征着是个指针 。 步骤和通讯 Objective-C中的类 可以申明两 品种型的 步骤:实体 步骤和类 步骤 。 一个实体 步骤是在这个特定类的实例中 威力执行的 步骤,换句话说, 在调用实体 步骤前,你必须首先要 缔造这个类的实例 。类 步骤, 绝对的,不需求 缔造实例 。 固然更 可以在 缔造实例之后调用 。 步骤的申明由 步骤的类型标识符、一个返回值类型、一个或多个签名 要害字、参数类型和名称信息构成 。 图1-2 展示实体 步骤 insertObject:atIndex:的申明 格局 。 图1-2 步骤申明的语法 申明开始于减号(-) ,减号用来标识这是一个实体 步骤 。这个 步骤的实际名称 (insertObject:atIndex:) 是全部签名 要害字的拼接,包括冒号 。 冒号申明了目前的参数.假如 步骤没有参数,你就 可以省略第一个签名 要害字 。 在这个例子中,该 步骤有两个参数 。 当你想调用这个 步骤时,你 可以通过向对象 通讯 。 通讯内容是 步骤签名和 步骤要求参数信息 。 信息是用中括号 ([ 和 ])包裹的 。 在中括号里面, 接纳信息的对象在左边,信息(包括信息要求的参数)在右边 。 例如,发送信息insertObject:atIndex: 到变量名为 myArray 的对象,你会用到下面的语法:
为了幸免申明多个 部分变量来 保留暂时 后果, Objective-C同意你嵌套信息 。来自每个嵌套信息中的返回值, 可以被用做参数、 指标、或另一个信息 。 例如,你 可以用信息来 接替前面例子中任意 使用过的变量 。从而,假如你有一个叫 myAppObject 的对象,它有 拜访数组对象和将对象插入数组的 步骤, 你 可以将前面的例子写成像下面这样:
Objective-C也提供用句点来调用 存取器 步骤 。 存取器 步骤猎取和设置一个对象的状态, 典型的 格局为 -(type)propertyName 和 -(void)setPropertyName:(type) 。 使用句点语法,你 可以将前面的例子重写成:
你也能 使用句点语法赋值:
用不同语法写也 比较 方便, [myAppObject setTheArray:aNewArray];. 只管前面的例子都是发送信息给一个类的实例,你也 可以发送信息到类 本身 。 当你要通讯到一个类,你指定的 步骤必须被定义成一个类 步骤,而非实体 步骤 。 典型的,你 使用类 步骤来 缔造类的新实例,或 拜访有关此类的一些共享信息 。 类 步骤的申明语法除了丝毫不同,其它 彻底和实体 步骤一样 。 用加号(+)来 接替用减号(-)作为 步骤类型的标识符 。 下面的例子便是来 注明如何 使用类 步骤作为一个类的工厂 步骤 。 在这个例子中, 步骤 array 是类 NSArray 的类 步骤—继承自 NSMutableArray— 它用于 调配和初始化该类的新实例并将它的返回到代码中 。
清单1-1 展示类了在前面例子中 MyClass 类的实现代码 。 像类的申明一样,类的实现通过两个编译指令 鉴别 —这里, @implementation 和 @end 。 这些指令提供编译器需求的 规模信息,来定位 绝对应类的 关闭 步骤 。 步骤的申明要匹配接口中相应的申明,不包括代码块里的内容 。 清单1-1 一个类的实现
|