为什么我的inits不会在启动时运行?

时间:2010-12-23 05:24:36

标签: objective-c init

根据一些例子,(主要是在Aaron的书中)我有一个想法,在启动时以某种方式调用了一个被覆盖的-init。当我自己尝试时,它不会那样工作。

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

什么都没发生。我认为它没有做任何事,因为在启动时没有任何叫做我的-init。当我从ProjectAppDelegate添加对-init的调用时,它正确运行。

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

2 个答案:

答案 0 :(得分:2)

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

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

在此之前,类描述只是一个描述。您可以将该行放在app委托的application:didFinishLaunchingWithOptions方法中,它确实会被初始化,此时您可以使用myFoo执行某些操作。

答案 1 :(得分:0)

init是初始化对象的方法的常规名称 - 例如,您使用[[NSMutableArray alloc] init]创建NSMutableArray。它仅在启动时为在启动时创建的对象调用。如果您有在程序启动时要运行的代码,则应将其放在应用程序委托的applicationDidFinishLaunching方法中。