Car *myCar = [[Car alloc] init];
创建一个名为Car
的新myCar
对象。但如果是:
Car *myCar = [[DifferentCar alloc] init];
会创造什么?我知道[[Xx alloc] init];
用于创建新对象,但 Xx 有什么用?
答案 0 :(得分:2)
创建一个名为
的新Car
myCar
对象
那不太对劲。它应该是"创建一个新的Car
对象,并将其分配给名为myCar
"的变量。
但如果是:
Car *myCar = [[DifferentCar alloc] init];
会创建什么?
我假设DifferentCar
是Car
的子类。将创建DifferentCar
的实例,并将其分配给名为myCar
的变量。该变量的静态类型为Car
,但其运行时类型为DifferentCar
(或其子类之一,如果实现选择进行替换)。
那里有
Xx
吗?
在上面的调用中,Xx
确定将alloc
消息发送到的对象的类型,最终决定正在创建的对象的类型。请注意,由于您正在立即调用init
,因此从调用返回的对象可能与发送到调用中的对象不同。