0

我试图弄清楚如何最好地处理多任务更改的 appDelegate 方法,并且我想考虑用户的任何可能行为。

如果在视图控制器的方法中有大量 ivar 初始化和视图设置会发生什么:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

当这个方法进行到一半时,用户退出了你的应用程序。但是,因为它支持多任务,当他们再次打开它时,上面的 init 方法是否会从它停止的地方继续?

如果是这样,这就是为什么最好将初始化放在上述方法而不是viewDidLoad因为,如果您在运行时退出应用程序,那么如果您随后运行应用程序viewDidLoad,它似乎viewDidLoad不会您离开的地方继续再次。

4

1 回答 1

1

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil如果您的意思是退出,即应用程序将进入后台,该方法将完成其执行。

例如,尝试将以下内容添加到该方法中,然后按下按钮将应用程序置于后台:

    for (int a=0 ; a< 50000; a++) {
      NSLog(@"t");
    }

将应用程序发送到后台后,您应该会看到日志记录仍在进行。

要回答您的第二个问题......您应该在 init 中进行初始化,因为您可以确定它只会在每个对象活动及其开始时被调用一次。当然,如果您销毁某些对象,例如,viewDidUnload您应该在 viewDidLoad 中重新创建它们。所以每次都取决于您希望 ivars 的值存在多长时间。例如,请参阅这个 SO 问题:我在 viewDidUnload 中到底必须做什么?

于 2012-04-23T15:00:30.323 回答