在iOS上,如何调用applicationDidBecomeActive,loadView和viewDidLoad?

时间:2012-05-20 13:58:38

标签: ios cocoa-touch uiview uiviewcontroller

方法applicationDidBecomeActiveloadViewviewDidLoad将在iOS应用中的适当时间调用。对于loadViewviewDidLoad,它看起来像是:

-(void) someMethod {

    //...

    [viewController loadView];
    [viewController viewDidLoad];

}

他们是如何被调用的,以及调用它们的类是什么? (是否有源代码可以显示应用程序启动的流程?很多时候,我们只能看到头文件而不是源代码)。

1 个答案:

答案 0 :(得分:4)

如果我理解你的问题,你想知道应用程序的生命周期,这是真的吗?

好吧,我猜苹果没有提供可以显示它的样子的源代码。

如果您想知道应用程序启动时的情况,我建议您阅读 Oleb app-launch-sequence-ios-revisited。这是一篇非常好的帖子。

关于您编写​​的方法,不应手动调用这些方法。这是为您调用它们的框架(通过iOS)。

方法loadViewviewDidLoad是在UIViewController生命周期内调用的方法。

如果无法创建故事板或nib文件,则使用(覆盖)loadView。通过这种方式,您可以为UIViewController提供全新视图。来自Apple doc:

  

如果您无法在故事板或nib文件中定义视图,   覆盖loadView方法以手动实例化视图层次结构   并将其分配给view属性。

换句话说:

- (void)loadView
{  
   UIView* myCustomView = ... // create the view here
   self.view = myCustomView;
}

关于viewDidLoad方法,在内存中设置视图时会调用此方法。完成后,您确定已设置插座,并且您可以执行其他初始化。

来自Apple doc:

  

在视图控制器加载其视图后调用此方法   层次结构到内存。无论是否调用此方法   视图层次结构是从nib文件加载或以编程方式创建的   在loadView方法中。您通常会覆盖此方法以执行   对从nib文件加载的视图进行额外的初始化。

换句话说:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // additional initializations here
}

最后,关于applicationDidBecomeActive方法(或代表,如果你想),调用它来让你的应用程序知道它从非活动状态转变为活动状态。

我建议您阅读UIApplicationDelegateUIViewController类引用。

如果您只想验证序列调用,请覆盖方法并在其中放置NSLog

希望它有所帮助。