2011-04-05 24 views
0

我使用下面的代码来初始化我的对象:只有调用的Alloc的对象

Spaceship *spaceship = [Spaceship alloc]; 

    [spaceship fire]; 

火方法得到调用,它似乎是工作的罚款。我的问题是,当我没有使用init方法初始化对象时它是如何工作的。

+0

让'fire'做一个'NSString'的'NSLog()',你在'init'方法中分配,看看会发生什么...... – GoatInTheMachine 2011-04-05 16:30:00

+0

实际上,上面的消息可能不会做任何事情, '吞下去,而你的无意识的'NSString'可能是'零'......但是JeremyP和黑色青蛙是正确的,不要依赖这个。 – GoatInTheMachine 2011-04-05 16:33:28

回答

2

你的-init方法实际上做了什么?如果你没有一个,我会让你陷入一个秘密:在当前执行运行时,NSObject-init只是一个空操作,所以忘记发送-init到一个没有-init它自己的方法不是一个巨大的灾难。你不应该依赖那个,但你应该发送-init到你的对象。

2

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

相关问题