cocoa-touch - willAnimateRotationToInterfaceOrientation 在 vi​​ewWillAppear 之前被调用

标签 cocoa-touch ios orientation uiinterfaceorientation viewdidappear

我刚刚发现我的 iOS 应用程序发生了崩溃,它与在 viewWillAppear 之前调用 willAnimateRotationToInterfaceOrientation 有关。

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

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

有什么方法可以延迟 willAnimateRotationToInterfaceOrientation 直到 View 出现并且所有内容都已重新初始化之后吗?

如果没有,我能看到的唯一解决方案是要么不使用 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 - willAnimateRotationToInterfaceOrientation 在 vi​​ewWillAppear 之前被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486943/

相关文章:

ios - UIDocument openWithCompletionHandler 未在 iOS 设备上完成

objective-c - 回调函数在提取双指针时存在问题

cocoa-touch - NSMutableURLRequest:无法通过 PUT 请求添加正文

ios - 如何在 UITableView 中将 UITableViewCell Image 更改为 Circle

android - 如何在 Android 中不保存 View 状态?

objective-c - DCRoundSwitch 在使用 ARC 时给出 EXC_BAD_ACCESS

ios - 为 UIButton 设置多个自定义参数

ios - 在 View Controller 中隐藏/显示控件

ios - 以纵向或横向拍摄照片并设置为方向受限于捕获方向的 View ?

iOS9 supportedInterfaceOrientationsForWindow 停止调用