0

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

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

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

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

如果没有,我能看到的唯一解决方案要么不使用 willAnimateRotationToInterfaceOrientation (这会导致方向变化难看),要么在我从 view1 切换到 view2 时不释放我的数据,这会导致使用的内存超出必要。

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

4

1 回答 1

1

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

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
}

使用延迟加载风格的代码,你永远不需要介意事件调用顺序。

于 2010-12-20T05:13:44.347 回答