0

根据一些示例(主要在 Aaron 的书中),我认为在启动时会以某种方式调用重写的 -init。当我自己尝试时,它并没有那样工作。

当我尝试它时,我创建了一个带有 -init 的类 Foo,在 Xcode 提供的 NSObject 的 ProjectAppDelegate 类中没有任何内容,也没有 IB。我希望它会在启动时以某种方式被调用。

没啥事儿。我认为它什么也没做,因为在启动时没有调用我的 -init 。当我从 ProjectAppDelegate 添加对 -init 的调用时,它运行正确。

我想知道为什么示例的 -init 方法在启动时运行,而我的却没有?

4

2 回答 2

2

类的 init 方法在对象被实例化时被调用,这意味着对象被创建。您的 Foo 类通常会像这样实例化:

Foo *myFoo = [[Foo alloc] init];

在此之前,类描述只是一个描述。你可以把这条线放在你的应用程序委托的application:didFinishLaunchingWithOptions方法中,它确实会被初始化,此时你可以用 myFoo 做一些事情。

于 2010-12-23T05:29:43.223 回答
0

init是初始化对象的方法的常规名称——例如,您使用 . 创建一个 NSMutableArray [[NSMutableArray alloc] init]。只有在启动时创建的对象才会在启动时调用它。如果您有想要在程序启动时运行的代码,您可以将它放在应用程序委托的applicationDidFinishLaunching方法中。

于 2010-12-23T05:55:22.087 回答