Objective c 仅对对象调用Alloc
我正在使用以下代码初始化我的对象:Objective c 仅对对象调用Alloc,objective-c,Objective C,我正在使用以下代码初始化我的对象: Spaceship *spaceship = [Spaceship alloc]; [spaceship fire]; 正在调用fire方法,它似乎工作正常。我的问题是,当我没有使用init方法初始化对象时,它是如何工作的 由于objective-c只是将消息传递给接收者,因此fire方法将起作用。但在init中执行的任何初始化都不会执行 由于objective-c只是将消息传递给接收者,因此fire方法将起作用。但在init中执行的任何初始化都
Spaceship *spaceship = [Spaceship alloc];
[spaceship fire];
正在调用fire方法,它似乎工作正常。我的问题是,当我没有使用init方法初始化对象时,它是如何工作的 由于objective-c只是将消息传递给接收者,因此fire方法将起作用。但在init中执行的任何初始化都不会执行 由于objective-c只是将消息传递给接收者,因此fire方法将起作用。但在init中执行的任何初始化都不会执行 您的
-init
方法实际上做什么?如果您没有,我将告诉您一个秘密:在当前的运行时实现中,NSObject
的-init
几乎是不可操作的,因此忘记将-init
发送给一个本身没有-init
方法的对象并不是一个巨大的灾难。但是,您不应该依赖于此,您应该将-init
发送到您的对象。您的-init
方法实际上做什么?如果您没有,我将告诉您一个秘密:在当前的运行时实现中,NSObject
的-init
几乎是不可操作的,因此忘记将-init
发送给一个本身没有-init
方法的对象并不是一个巨大的灾难。不过,你不应该依赖于此,你应该将-init
发送到你的对象。让fire
对你在init
方法中分配的NSString
执行一个NSLog()
,看看会发生什么……实际上,上述操作可能不会起到任何作用,因为nil
的消息会被吞没,你的未初始化的NSString
可能是nil
…但是JeremyP和Black Frog是正确的,不要依赖于此。让fire
做一个NSLog()
的一个NSString
,你在init
方法中分配它,看看会发生什么…实际上,当发送给nil
的消息被吞没时,上面可能不会做任何事,而你未初始化的NSString
很可能是nil
…但是JeremyP和Black Frog是正确的,不要依赖这一点。