创建对象

时间:2015-02-10 17:34:57

标签: objective-c object allocation

Car *myCar = [[Car alloc] init];

创建一个名为Car的新myCar对象。但如果是:

Car *myCar = [[DifferentCar alloc] init];

会创造什么?我知道[[Xx alloc] init];用于创建新对象,但 Xx 有什么用?

1 个答案:

答案 0 :(得分:2)

  

创建一个名为Car

的新myCar对象

那不太对劲。它应该是"创建一个新的Car对象,并将其分配给名为myCar"的变量。

  

但如果是:Car *myCar = [[DifferentCar alloc] init];会创建什么?

我假设DifferentCarCar的子类。将创建DifferentCar的实例,并将其分配给名为myCar的变量。该变量的静态类型为Car,但其运行时类型为DifferentCar(或其子类之一,如果实现选择进行替换)。

  

那里有Xx吗?

在上面的调用中,Xx确定将alloc消息发送到的对象的类型,最终决定正在创建的对象的类型。请注意,由于您正在立即调用init,因此从调用返回的对象可能与发送到调用中的对象不同。