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