Cocoa touch 将在视图出现之前调用WillAnimateRotationInterfaceOrientation
我刚刚在我的iOS应用程序中找到了一个崩溃,它与在ViewWillView出现之前调用WillAnimateRotationInterfaceOrientation有关 我有一个有两个视图的应用程序。基本上,当view1消失时,我会释放一些数组,假设它们在VIEWWILLEXEEN中重新出现时会重新初始化 但是,如果我在view2中更改方向,然后切换回view1,这将导致WillAnimateRotationInterfaceOrientation在view1调用ViewWillAppear并重新初始化所有内容之前发生,从而导致崩溃 有没有办法将WillAnimateRotationInterfaceOrientation延迟到视图出现并重新初始化所有内容之后 如果不是,我能看到的唯一解决方案就是不使用WillAnimateRotationInterfaceOrientation(这会导致外观难看的方向改变),或者在我从view1切换到view2时不释放数据,这会导致占用的内存过多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并重
有人对我应该做什么有什么想法吗?您可以使用延迟加载样式代码来避免问题,例如:
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,否则重新初始化它?