当设备倾斜到横向时,iOS应用程序崩溃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当设备倾斜到横向时,iOS应用程序崩溃相关的知识,希望对你有一定的参考价值。
使用Swift处理ios 8应用程序。它只能在纵向模式下支持。
如果应用程序以纵向模式启动并且不会倾斜以使设备处于横向模式,则该应用程序可以正常运行。如果设备STARTS处于横向模式并且保持在此模式或倾斜到纵向模式,它也可以正常运行。
当手机从纵向移动到横向模式时,应用程序每次都会崩溃。错误类型为EXC_BAD_ACCESS并给出一个地址。用户界面突出显示了AppDelegate
类的第一行。
info.plist已更改为表示仅支持纵向模式的事实。另外,我尝试在根视图控制器中覆盖方法shouldAutorotate()
。但是,我认为这是一个记忆问题。
我需要哪些信息才能找到解决此问题的方法?任何人都可以指出我在iOS 8中处理内存问题的资源吗?
iOS 8中的内存与其他任何操作系统相比都没有什么特别之处。 Xcode还附带了大量有用的工具来帮助您。我建议你使用Instruments中的分配工具,使用僵尸,使用guardmalloc,使用lldb附加到进程,触发崩溃。
查看分配以查看分配位置并跟踪其生命周期。
使用lldb计算出值并检查调用堆栈。
这种情况发生在我们身上,Apple的旋转动画开始发生,然后滞后,然后整个手机重新启动。似乎Apple在定位更改期间内置旋转动画存在内存管理问题。您可以通过在主ViewController中放置以下方法来禁用它们为我们解决此问题的旋转动画
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {//disables Apple's spinning animation when orientation changes which was causing app crashes due to memory issues
[UIView setAnimationsEnabled:NO];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((0.01f) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//failsafe
[UIView setAnimationsEnabled:YES];
});
[coordinator notifyWhenInteractionChangesUsingBlock:^(id<UIViewControllerTransitionCoordinatorContext> context) {
[UIView setAnimationsEnabled:YES];
}];
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
以上是关于当设备倾斜到横向时,iOS应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
当设备处于横向时,Phonegap iOS 应用程序以纵向加载
当用户在没有代码的情况下将设备旋转为横向时,如何在 ScrollView 中显示图像?