我想知道我们什么时候在项目中使用“init”方法?我见过很多没有它的项目,他们使用“applicationDidFinishLaunching”来启动应用程序,而不是 init 方法,你知道吗?
非常感谢
最佳答案
init
方法用于在分配对象后初始化对象。
如果未定义,则调用基类实现,就像 Objective-C 中的任何其他方法一样,如果基类没有 init
方法,则调用基类的基类' init
将被调用,依此类推,直到肯定提供了 NSObject
的 init
。
如果您不声明 init
方法,那么您将无法正确初始化类中的 ivar(如果有的话)。
关于applicationDidFinishLaunching
,这是一个非常特殊的类的方法,任何Cocoa/iOS 应用程序都有,它的应用程序委托(delegate)。例如:
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
...
}
(注意:UIApplicationDelegate
也可以是 NSApplicationDelegate
)
如您所见,此类派生自 NSObject,因此,框架将通过调用该类中定义的 init
方法(具体取决于框架)来初始化它。然后,在某个时候,框架将调用 applicationDidFinishLaunching
方法,您可以更改以初始化所有委托(delegate)的成员并执行启动应用所需的任何操作。
在这种情况下,您不需要在 init
方法中而是在 applicationDidFinishLaunching
中进行初始化这一事实与 UIApplication 之间的特定交互模式有关(或 NSApplication) 对象及其委托(delegate)。这个模式是Apple这样定义的;
您在 MainWindow.xib 中或在
main.c
中调用UIApplicationMain
时指定您的应用程序委托(delegate)类;框架负责实例化这些类(以程序员不需要处理的自定义方式)并调用
applicationDidFinishLaunching
,这样您就可以用它做任何您需要的事情。
我希望这个解释能帮助您理解应用程序委托(delegate)发生了什么,以及为什么您不声明 init
方法。
关于iphone - 是否从 init 方法开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731713/