创建对象
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?
我假设 DifferentCar
是 Car
的子类。将创建 DifferentCar
的实例,并将其分配给名为 myCar
的变量。该变量的静态类型为 Car
,但其运行时类型为 DifferentCar
(或其子类之一,如果实现选择进行替换)。
what Xx
does there?
在上面的调用中,Xx
确定 alloc
消息将发送到的对象类型,最终决定要创建的对象的类型。请注意,由于您是立即调用 init
,因此调用返回的对象可能与发送到调用中的对象不同。
Car *myCar = [[Car alloc] init];
创建一个名为 myCar
的新 Car
对象。但如果是:
Car *myCar = [[DifferentCar alloc] init];
将创建什么?我知道 [[Xx alloc] init];
用于创建新对象,但是 Xx 在那里做什么?
creates a new
Car
object with the namemyCar
这不太正确。应该是 "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?
我假设 DifferentCar
是 Car
的子类。将创建 DifferentCar
的实例,并将其分配给名为 myCar
的变量。该变量的静态类型为 Car
,但其运行时类型为 DifferentCar
(或其子类之一,如果实现选择进行替换)。
what
Xx
does there?
在上面的调用中,Xx
确定 alloc
消息将发送到的对象类型,最终决定要创建的对象的类型。请注意,由于您是立即调用 init
,因此调用返回的对象可能与发送到调用中的对象不同。