仅在对象上调用Alloc

时间:2011-04-05 16:21:21

标签: objective-c

我使用以下代码初始化我的对象:

 Spaceship *spaceship = [Spaceship alloc];

    [spaceship fire];

fire方法被调用,似乎工作正常。我的问题是,当我没有使用init方法初始化对象时它是如何工作的。

2 个答案:

答案 0 :(得分:2)

fire方法将起作用,因为objective-c只是将消息传递给接收者。但是,您在init中执行的任何初始化都不会执行。

答案 1 :(得分:2)

您的-init方法实际上做了什么?如果你没有,我会告诉你一个秘密:在运行时的当前实现中,NSObject的{​​{1}}只是一个不行-op,所以忘记将-init发送到没有-init方法的对象并不是一个巨大的灾难。您不应该依赖它,而应该将-init发送给您的对象。