我刚刚发现我的 iOS 应用程序发生了崩溃,它与在 viewWillAppear 之前调用 willAnimateRotationToInterfaceOrientation 有关。
我有一个有两个 View 的应用程序。基本上,当 view1 消失时,我释放一些数组,假设它们重新出现在 viewWillAppear 中时将被重新初始化。
但是,如果我更改 view2 中的方向然后切换回 view1,这会导致 willAnimateRotationToInterfaceOrientation 在 view1 调用 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 在 viewWillAppear 之前被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486943/