当设备倾斜到横向时,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 中显示图像?

iOS CATiledLayer 崩溃

在 jQuery Mobile 中,如果手机倾斜到横向,如何在编辑时使文本输入全屏显示?

没有视图的片段在配置更改时崩溃

iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?