我刚刚跟踪了我在iOS应用程序中遇到的崩溃,它与在viewWillAppear之前调用willAnimateRotationToInterfaceOrientation有关。willAnimateRotationToInterfaceOrientation被称为BEFORE viewWillAppear
我有一个应用程序与两个意见。基本上,当view1消失时,我释放一些数组,假设它们在viewWillAppear中重新出现时将被重新初始化。但是,如果我在view2中更改方向,然后切换回view1,则会导致willAnimateRotationToInterfaceOrientation在view1调用viewWillAppear并重新初始化所有内容并导致崩溃之前发生。
有什么办法可以延迟willAnimateRotationToInterfaceOrientation,直到视图出现并且所有的东西都被重新初始化了吗?
如果不是这样,我可以看到的唯一解决方案是不使用willAnimateRotationToInterfaceOrientation(这会导致难看的方向更改),或者在从view1切换到view2时导致使用的内存不足,从而无法释放数据。
有没有人对我应该做什么有任何想法?
谢谢,这是有道理的,但我怎么知道我的数组是否已被重新初始化?我尝试了如果(!myArray)和if(myArray = nil)和if([myArray count] == 0),但在数组被释放之前以及重新定义之前似乎没有任何工作。 该数组在@interface中定义,因为它的范围应该是整个类,然后它在viewDidAppar中初始化,然后在viewWillDissappear中释放。现在在这种方向改变的情况下,我需要找到一种方法来判断它是否已经发布。全局布尔值可以工作,但这不是很优雅。 – Jackson 2010-12-20 14:40:17
好吧,我有一个想法。我应该释放,然后设置我的数据数组为零,所以我可以稍后检查它是否等于零,否则重新初始化它? – Jackson 2010-12-20 15:08:22