数据第一,函数第二
.m代表message,指的是Objective-C的一个主要的特性。
typedef enum {……} Color;
typedef struct {……} Shape;
Shape shape = {1,2,3……};//结构体初始化
Shape shape1; shape.x = 1;shape.y = 2;……;
@interface Shape : NSObject
{……}
- (void) setColor : (Color) color;
@end;
@implementation Shape
- (void) setColor :(Color) c
{ color = c;}
@end;
Shape shape = [Shape new];
[shape setColor:red];
- (void) setValues:(Color) c setBound:(Bound) b
[shape setValues:color setBound:bound];在Objective-C中调用方法时,一个名为self的秘密隐藏参数将被传递给接收对象,而这个对象引用的就是该接收对象。
NSSpeechSynthesizer是你听到声音。
UML Unified Modeling Languange 统一建模语言
UML中的类定义:类名位于方框的顶部,中间部分是实例变量,底部是类所提供的方法。
UML中使用末端带有箭头的竖线表示继承关系。
不要直接修改继承来的实例变量的值,一定要使用方法来更改他们。
Objective-C和java都不支持多继承,可以通过分类和协议获取多继承的优点。
这种移动和简化代码的方式成为重构。
方法调度的密码:当代码发送消息时,Objective-C的方法调度程序将在当前类中搜索相应的方法。如果调度程序无法在接收消息的对象类中找到相应的方法,它就在该对象的超类中查找。
使用更具体类的对象,代替一般类型,这种能力称为多态性。
self隐藏参数指向继承链中顶端超类的第一个实例变量。
编译器使用“基地址加偏移量”的方式实现了巧妙的功能。
NSTableView类用于显示用户点击了那些对象的滚动列表。
super
NSObject对象中有一个+ (NSString *)description;方法,用于输出对象的描述。
NSLog()可以使用%@格式说明符来输出对象。NSLog()处理%@说明符时,它会询问参数列表中相应的对象以得到这个对象的描述。从技术上讲,就是NSLog()给这个对象发送描述消息,即调用对象的description方法。
每一个Car对象都会为指向engine和tires的指针分配内存。但是真正包含在Car中并不是engine和tires变量,而只是内存中存在的其他对象的引用。为新建的Car分配内存时,这些指针将被初始化成nil(零值)。