我刚刚找到了我在iOS应用中遇到的崩溃,这与在viewWillAppear之前调用willAnimateRotationToInterfaceOrientation有关。

我有一个具有两个视图的应用程序。基本上,当view1消失时,我释放了一些数组,假设它们在viewWillAppear中重新出现时将被重新初始化。

但是,如果我更改view2的方向,然后切换回view1,这将导致willAnimateRotationToInterfaceOrientation在view1调用viewWillAppear并重新初始化所有内容之前发生,这将导致崩溃。

有什么方法可以将willAnimateRotationToInterfaceOrientation延迟到视图出现并且一切都重新初始化之后?

如果没有,我只能看到的解决方案要么不使用willAnimateRotationToInterfaceOrientation(这将导致外观看起来很丑陋),要么当我从view1切换到view2时不释放数据,这将导致使用过多的内存。

有人对我应该做什么有任何想法吗?

最佳答案

您可以使用延迟加载样式代码来避免出现问题,例如:

NSArray* someData;


-(void)somefun1{

   if (!someData) {

      [self loadData];
   }

    //use your data
}

-(void)somefun2{

    if (!someData) {

    [self loadData];
    }

    //use your data

}

-(void)loadData{
    //some loading code
}


使用延迟加载样式代码,您无需介意事件调用顺序。

关于cocoa-touch - 在viewWillAppear之前将willAnimateRotationToInterfaceOrientation称为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4486943/

10-14 09:44