创建对象

Creation of an Objects

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

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

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

将创建什么?我知道 [[Xx alloc] init]; 用于创建新对象,但是 Xx 在那里做什么?

creates a new Car object with the name myCar

这不太正确。应该是 "creates a new Car object, and assigns it to a variable called myCar".

But if it is: Car *myCar = [[DifferentCar alloc] init]; What will be created?

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

what Xx does there?

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