Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch 将在视图出现之前调用WillAnimateRotationInterfaceOrientation_Cocoa Touch_Ios_Orientation_Uiinterfaceorientation_Viewdidappear - Fatal编程技术网

Cocoa touch 将在视图出现之前调用WillAnimateRotationInterfaceOrientation

Cocoa touch 将在视图出现之前调用WillAnimateRotationInterfaceOrientation,cocoa-touch,ios,orientation,uiinterfaceorientation,viewdidappear,Cocoa Touch,Ios,Orientation,Uiinterfaceorientation,Viewdidappear,我刚刚在我的iOS应用程序中找到了一个崩溃,它与在ViewWillView出现之前调用WillAnimateRotationInterfaceOrientation有关 我有一个有两个视图的应用程序。基本上,当view1消失时,我会释放一些数组,假设它们在VIEWWILLEXEEN中重新出现时会重新初始化 但是,如果我在view2中更改方向,然后切换回view1,这将导致WillAnimateRotationInterfaceOrientation在view1调用ViewWillAppear并重

我刚刚在我的iOS应用程序中找到了一个崩溃,它与在ViewWillView出现之前调用WillAnimateRotationInterfaceOrientation有关

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

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

有没有办法将WillAnimateRotationInterfaceOrientation延迟到视图出现并重新初始化所有内容之后

如果不是,我能看到的唯一解决方案就是不使用WillAnimateRotationInterfaceOrientation(这会导致外观难看的方向改变),或者在我从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
}

使用延迟加载样式的代码,您根本不需要考虑事件调用顺序。

谢谢,这很有意义,但如何判断数组是否已重新初始化?我尝试了if(!myArray)和if(myArray=nil)以及if([myArray count]==0),但在数组被释放之后和重新定义之前,这些方法似乎都不起作用。数组是在@interface中定义的,因为它的作用域应该是整个类,然后在ViewDidAppra中初始化,然后在ViewWillDissExample中发布。现在,在这个方向改变的情况下,我需要找到一种方法来判断它是否已经被释放。全局布尔值可以工作,但这不是很优雅。好的,我有个主意。我是否应该释放数据数组,然后将其设置为nil,以便稍后检查它是否等于nil,否则重新初始化它?