奇宝库 > objective-c基础编程(objective-c基础教程pdf)

objective-c基础编程(objective-c基础教程pdf)

objective-c基础课程是很多朋友关心的话题。Objective-C是一种简单的计算机语言,旨在支持真正的面向对象编程。

Objective-C通过提供类定义、方法和属性的语法以及其他可以提高类的动态扩展能力的结构,扩展了标准的ANSI C语言。类的语法和设计主要基于最早的面向对象编程语言之一Smalltalk。

如果您以前使用过其他面向对象编程语言,那么下面的信息可以帮助您学习Objective-C的基本语法。许多传统的面向对象概念,如封装、继承和多态性,都在Objective-C中体现。这里有一些重要的差异,但这些差异将在本文中显示,如果您需要,还有更详细的信息。

如果你从未用任何编程语言编写过程序,那么在开始之前,你至少应该知道一些基本的概念。对象的使用和对象对象架构是iPhone程序设计的基础。理解它们如何相互作用对于创建你的程序是非常重要的。要理解面向对象的概念,请参考Objective-C的面向对象编程。

objective-c的基础教程——Objective-C的超集

Objective-Objective-C是C语言的严格超集——任何C语言程序都可以直接通过Objective-C编译器,无需修改,在Objective-C中使用C语言代码是完全合法的,Objective-C被描述为C语言上的一个薄薄的层,因为Objective-C的初衷是在C语言的主体中加入面向对象的特性。

Objective-c基础教程-Objective-C代码的文件扩展名

当需要在源代码中包含头文件时,可以使用标准的#include编译选项,但是Objective-C提供了更好的方法。#import选项与#include选项完全相同,只是它确保同一文件只被包含一次。Objective-C的例子和文档倾向于使用#import,你的代码应该是一样的。

目标-c基础教程-语法

Objective-C的面向对象语法源于Smalltalk消息传递风格。其他所有非面向对象的语法,包括变量类型、预处理、流程控制、函数声明和调用,都与C语言完全一致。但是,C语言语法中的一些合法代码在objective-c中并不一定具有相同的含义,比如有些布尔表达式在C语言中返回值为true,但如果直接与Objective-C中的yes进行比较,函数就会出错,因为Objective-C中yes的值只表示为1。

第一个Objective-C程序,基于Xcode 4.3.1:

目标-c基础教程-消息传递

Objective-C最大的特点是继承了Smalltalk的消息传递模型,与当今C的主流风格大相径庭。在Objective-C中,对象相互传递消息比相互调用方法更准确。两种风格的主要区别在于调用方法/消息传递的动作。C中的类别和方法之间的关系非常清楚。一个方法必须属于一个类别,并且在编译时被紧密绑定。调用一个不存在于类别中的方法是不可能的。然而,在Objective-C中,类别和消息之间的关系是松散的。调用方法被视为向对象发送消息,所有方法都被视为对消息的响应。直到运行时才会动态地确定所有的消息处理,并且将由类来决定如何处理接收到的消息。也就是说,类别不保证它会对收到的消息做出响应。如果类别接收到未处理的消息,程序只会抛出异常,而不会出错或崩溃。

c,向对象发送消息(或调用方法)的语法如下:

典型的C含义解释是‘调用car类的fly方法’。如果在car类中没有定义fly方法,编译肯定会失败。但在Objective-C中,我们应该把它解释为‘发送消息向汽车对象提交一只苍蝇’。苍蝇是信息,汽车是信息的接收者。收到消息后,car将决定如何回复此消息。如果在car类别中定义了一个fly方法,它将运行该方法中的代码。如果car中没有fly方法,程序仍然可以编译,运行时会抛出异常。

这两种风格各有利弊。c强制所有方法都有对应的动作,编译时绑定使得函数调用非常快。缺点是虚拟关键字只能提供有限的动态绑定能力。Objective-C天生具有鸭式动态绑定能力,因为运行时只处理消息,允许未知消息发送给对象。你可以向整个对象集合发送消息,而不需要逐个检查每个对象的类型,而且你还有一个消息转发机制。同时,空对象nil在接收到消息后默认不做任何事情,所以你不用担心在向nil发送消息时程序崩溃。

目标-c基础教程-字符串

作为C语言的超集,Objective-C支持C语言字符串的约定。也就是说,单个字符用单引号括起来,字符串用双引号括起来。但是,大多数Objective-C通常不使用C语言风格的字符串。相反,大多数框架将字符串传递给NSString对象。NSString类为字符串提供了一个类包装器,它包含了您所期望的所有优点,包括用于存储任意长度字符串的内置内存管理机制、对Unicode的支持、printf风格的格式化工具等等。因为这种类型的字符串经常使用,Objective-C提供了一个助记符来轻松地从常量值创建NSString对象。要使用这种助记符,您只需在普通的双引号字符串前放置一个@符号,如下例所示:

目标-c基础教程-类

像所有其他面向对象的语言一样,类是Objective-C用来封装数据和操作数据的基础结构。对象是类的运行时实例,它包含由类声明的实例变量和指向类成员的指针的自己的内存副本。Objective-C的类规范包含两部分:定义(接口)和实现。接口部分包含类声明、实例变量的定义以及与类相关的方法。实现部分包含类方法的实际代码。

下图显示了声明名为MyClass的类的语法,该类继承自NSObject的基类。类声明总是以@interface编译选项开始,以@end编译选项结束。类名之后(用冒号分隔)是父类名。该类的实例(或成员)变量在用花括号括起来的代码块中声明。实例块之后是该类声明的方法列表。每个实例变量和方法声明都以分号结束。

类的定义文件遵循C语言与。h作为后缀,实现文件用。m作为后缀。

类声明图

目标-c基础课程-界面

定义部分明确定义了类的名称、数据成员和方法。以关键字@interface开头,以@end结尾。

方法前面的/-号表示函数的类型:加号()表示类方法,不需要实例就可以调用,类似于c的静态成员函数,减号(-)是一般的实例方法。

下面是一个意思相近的C语法对比,如下:

Objective-C定义新方法时,名称中的冒号(:)代表参数传递,这与C语言在数学函数的括号中传递参数不同。Objective-C方法使得参数可以混合在名字中间,而不是全部附加在方法名的末尾,这样可以提高程序的可读性。例如,设置颜色的RGB值的方法:

此方法的签名是setColorred: green: blue:每个冒号后面跟一个float类别的参数,分别代表红色、绿色和蓝色。

简单的objective-c基础教程介绍到这里。希望对你有帮助。

本文来自网络,不代表本站立场,转载请注明出处: