根据一些例子,(主要是在Aaron的书中)我有一个想法,在启动时以某种方式调用了一个被覆盖的-init。当我自己尝试时,它不会那样工作。
当我尝试使用时,我创建了一个带有-init的类Foo,在NSObject的ProjectAppDelegate类中没有任何内容,Xcode提供并且没有IB。我预计它会以某种方式在启动时被调用。
什么都没发生。我认为它没有做任何事,因为在启动时没有任何叫做我的-init。当我从ProjectAppDelegate添加对-init的调用时,它正确运行。
我想知道为什么示例'-init方法在启动时运行,而我的没有?
答案 0 :(得分:2)
在实例化对象时调用类的init方法,这意味着创建了对象。您的Foo类通常会像这样实例化:
Foo *myFoo = [[Foo alloc] init];
在此之前,类描述只是一个描述。您可以将该行放在app委托的application:didFinishLaunchingWithOptions
方法中,它确实会被初始化,此时您可以使用myFoo执行某些操作。
答案 1 :(得分:0)
init
是初始化对象的方法的常规名称 - 例如,您使用[[NSMutableArray alloc] init]
创建NSMutableArray。它仅在启动时为在启动时创建的对象调用。如果您有在程序启动时要运行的代码,则应将其放在应用程序委托的applicationDidFinishLaunching
方法中。