Xcode通过.m扩展名来表示文件使用的是Objective-C代码,应由OC编译器处理。其他比如.c由C编译器处理,.cpp对应C++编译器。而LLVM编译器能编译它们三种。

#import

#import作用为保证头文件只被包含一次。(避免一个文件包含一个文件而后者又包含前者的状况)

#import<Foundation/Fondation.h>表示告诉编译器查找Foundation框架中的Foundation.h头文件。

框架

框架(一种把头文件、库、图片、声音等内容聚集在一个独立单元中的几何体)苹果的框架{Cocoa,Carbon,QuickTime,OpenGL};Cocoa{Foundation,Application Kit};

支持型框架{Core Animation,Core Image}

这么多框架,每个都有一个主头文件,我们只要通过在主头文件中使用#import,就可以访问框架内的所有功能。

BOOL

id

什么是id?:id表示的是标识符(identifier)。是一种泛型,可以用来引用任何类型的对象。因为对象是一种包含代码的struct结构体,因此id实际上是一个指向结构体的指针。

调用

通知对象执行某种操作称为发送消息(调用方法)。

[shape draw]就表示向shape对象发送draw消息。

而向对象发送消息后,就需要来调用所需的代码:

1、对象是消息的目标,需要查出它属于哪一个类。

2、在对应类中浏览代码,查找对应函数的位置。

3、找到对应函数后,执行。

类(class)是一种表示对象类型的结构体。对象通过它的类来获取自身的各种信息,尤其是执行每个操作需要运行的代码。

对象(即实例instance)

对象(object)是一种包含值和指向其类的隐藏指针的结构体。

消息

消息(message)是对象可以执行的操作,用于通知对象去做什么。

方法

方法(method)是为响应消息而运行的代码。

接口(API)

接口(interface)是类为对象提供的特性描述。

实现

实现(implementation)是使接口能正常工作的代码。

@interface

创建某个特定类的对象之前,Objective-C编译器需要一些有关该类的信息,尤其是对象的数据成员及其提供的功能。可以用interface指令把这些信息传递给编译器。

在@interface和@end之间可能包含各种数据成员,或者方法。

方法声明(method declaration)

例如 - (void)setBounds:(ShapeRect)bounds;

其中左边减号代表对象方法,类似的若为"+"号则为类方法,对象方法由对象调用,类方法由类调用;

(void)代表方法不返回任何值;方法的名称实际为setBounds:,有冒号代表方法是有参数的,冒号后面分别为参数类型、参数名,若方法没有参数则不可加冒号。

@implementation

@interface部分负责定义类的公共接口,而@implementation部分则包含了能使对象能够运行的代码。它是一个编译器指令,表明你将为某个类提供代码,一般为 @implementation 类名

在@implementation中可以定义那些在@interface中没有声明过的方法,作为仅能在当前类实现中使用的私有方法。然而并不是说这样做就不能从该实现之外访问该方法。Objective-C中不存在真正的私有方法,也无法把某个方法标识为私有方法,从而禁止其他代码调用它。这是Objective-C动态本质的副作用。

实例化对象

实例化(instantiation):实例化对象时,需要分配内存,然后将这些内存初始化并保存为有用的默认值,这些值不同于通过新分配的内存获得的随机值。内存分配和初始化工作完成后,就意味着新的对象实例已经创建好了。

self

每个方法调用都包括一个名为self的隐藏参数,它是对象自身。使用self参数后,方法可以查找并操作对象的数据。

待续..