Objective C 基础教程

复合

使用复合可组合多个对象,使之人工协作。

会同时使用继和复合来创建自己的类。

编程中的复合就好像音乐中的作曲一样;将多个组件组合在一起配合使用。

在Objective-C中,复合是通过包含作为实例变量的对象指针实现的。
@interface Unicycle : NSObject

{

  Pedal *pedal;

  Tire *tire;

}


@end

pedal 和tire通过复合的方式组成了Unicycle(独轮车)

Car 程序

如何搭建汽车模型。

CarParts 包含在主程序mainCarParts.m中。

#import <Foundation/Foundation.h>

@interface Tire : NSObject

@end

@implementation Tire

- (NSString *) description

{

  return (@"I am a tire. Ilast a while");

}

@end

Tire类中唯一的方法是description,没有在接口中声。

Cocoa神奇的帮助

自定义NSLog()

通过NSLog()可以使用%@格式符来输出对象.

%@会询问参数列表中相应的对象以得到这个对象的描述。

从技术上讲,就是NSLog()给这个对象发送描述消息,然后对象的description方法生成一个NSString并返回。

在类中添加description方法就可以自定义NSLog()如何输出对象

在自定义的description方法中,你可以选择返回一个字面值NSString.如@"I am a cheese Danish Object"
,也可以构造一个描述该对象所有此类消息的字符串。

在Cocoa中,NSArray类管理的是对象集合。

它的description

 方法调度

当代码发送消息时,Objetive C的方法调度程序将在当前类中搜索相应的方法。

如果高度程序无法在接收消息的对象类中找到相应的方法,它就在该对象的超类中进行[。

[shape setFillColor:kRedColor] Objective -c 方法调度程序将查找接收该消息的对象Circle类有一个指向其它代码的指针,

消息

实例变量

创建一个新类时,其对象首先从自身的超过类中继承实例变量,然后添加它们自己的实例变量。

@interface RoundedRectagnle : shape

{

  int radius;

}

@end

内存布局

继承在子类和超类之间建立了一种"isa"关系, 所以NSobject的实例变量称为isa

使用更具体种类的对象,称为多态

 

每个方法调用都获得一个名为self的隐藏参数,它是一个指向接收消息的对象的指针方法使用self参数来查找它们要使用的实例变量 ,

 

 

你可能感兴趣的:(objective c)