1)Objective-C的类定义包含两个部分,一是类接口的声明,二是类方法的实现。
2)所有的 Objective-C的所有编译指示都以@打头。
a)类接口以@interface开始以@end结束。
b)类的实现以@implementation开始以@end结束。
c)每个实现文件必须包含它自己对应的接口文件,这样实现文件中就可以安全的将 父类名删除,将类的instance变量声明删除,只关注类的方法的实现;可以这样做的原因是我们没有必要重复接口文件中同样的声明。
d)不要将源文件中的函数参数命名成与该类成员变量同名的变量,否则函数的参数名会覆盖类的成员变量,导致在该函数的实现中看不到类定义中的成员变量。
如在头文件中一个类接口声明如下:
@interface Circle:NSObject
{
ShapeRect bounds;
ShapeColor fillColor;
}
- (void) SetFillColor: (ShapeColor) fillColor;
- (void) SetBounds: (ShapeRect) bounds;
- (void) draw;
@end //Circle
我们源文件中类的实现如下:
@implementation Circle
- (void) SetFillColor: (ShapeColor)c
{
fillColor = c;
}
- (void) SetBounds: (ShapeRect)b
{
bounds = b;
}
- (void) draw
{
NSLog(@"drawing a circle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.hight,colorName(fillColor));
}
@end //circle
3)id 比较独特,在Objective-C中它是一种泛型,该类型的变量可以存储指向任何一个对象的指针。
4)向一个对象发送一个消息,那么该对象又是如何去执行该消息所对应的代码呢?
每个对象都包含一个指向其类的指针,而类也包含一个指针该指针指向该类的代码区域。
这样当对象收到一个消息,对象通过其包含的指向找到其所属的类对象,通过类对象的代码区指针又可以找到与消息对应的函数。
每个对象都包含一个名叫isa的指针,就是该指针指向类。
5)Objective-C中的基本术语:
类:类是一种结构,它用于表示一个对象的类型。对象通过isa指针来引用类来获得与本身有关的所有信息,尤其是像4)中所说的如何执行每种操作的代码。
对象:也是一种结构,该结构主要包含成员变量的值和指向其类的隐藏指针(isa);同一类的所有象共享一份代码。
实例:是“对象”的另外一种称呼。
消息:是对象可以执行的操作,用于通知对象去做什么,一个对象能响应哪些消息可以从接口定义中知道。
方法:为响应消息而运行的代码。根据对象的类,消息可以调用不同的方法。
接口:是对对象的类应该提供的特性的描述。相当于是告诉其他使用该类的客户,该类的对象可以接收哪几个消息。与上面说的“消息”术语一致。
实现:是使接口正常工作的代码,也就是使对象消息正常工作的代码。与上面的“实现”术语一致。
6)有些方法名后有冒号,有些没有呢?如何判断什么时候有,什么时候没有?
如果方法使用参数,则需要冒号;否则不需要冒号。如上面的代码片断。