Iphone iVar初始化的多任务挑战 我想知道如何最好地处理多任务更改的AppDead方法,我想考虑用户可能的任何行为。

Iphone iVar初始化的多任务挑战 我想知道如何最好地处理多任务更改的AppDead方法,我想考虑用户可能的任何行为。,iphone,objective-c,uiviewcontroller,Iphone,Objective C,Uiviewcontroller,如果在视图控制器的方法中进行了大量ivar初始化和视图设置,会发生什么情况: -(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil 虽然这个方法已经完成了一半,但用户会退出你的应用程序。但是,因为它支持多任务,当他们再次打开它时,上面的init方法是否会继续它停止的地方 如果是这样,这就是为什么在上述方法中而不是在viewDidLoad中进行初始化更好的原因,因为如果您在viewDidLoad运

如果在视图控制器的方法中进行了大量ivar初始化和视图设置,会发生什么情况:

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

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

如果是这样,这就是为什么在上述方法中而不是在
viewDidLoad
中进行初始化更好的原因,因为如果您在
viewDidLoad
运行时退出应用程序,那么如果您再次运行应用程序,
viewDidLoad
似乎不会从您停止的位置开始。

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

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

    for (int a=0 ; a< 50000; a++) {
      NSLog(@"t");
    }
for(int a=0;a<50000;a++){
NSLog(@“t”);
}
您应该看到,在将应用程序发送到后台后,日志记录仍在进行

要回答你的第二个问题。。。 您应该在init中进行初始化,因为在那里您可以确定,对于每个活动对象及其最开始的部分,它只会被调用一次。当然,如果您在
viewDidUnload
中销毁了一些对象,您应该在viewDidLoad中重新创建它们。因此,它每次都取决于您希望IVAR的值存在多长时间。例如,见本SO问题: