使用Swift处理iOS 8应用。它只能在纵向模式下支持。
如果应用程序以纵向模式启动并且不会倾斜,以使设备处于横向模式,则该应用程序可以正常运行。如果设备处于横向模式并且处于此模式或倾斜至纵向模式,它也可以毫无问题地运行。
当手机从纵向移动到横向模式时,应用程序每次都会崩溃。错误类型为EXC_BAD_ACCESS并给出一个地址。 UI突出显示AppDelegate
类的第一行。
info.plist已更改为表示仅支持纵向模式的事实。另外,我尝试覆盖根视图控制器中的方法shouldAutorotate()
。但是,我认为这是一个记忆问题。
我需要哪些信息才能找到解决此问题的方法?任何人都可以指出我在iOS 8中处理内存问题的资源吗?
答案 0 :(得分:1)
iOS 8中的内存与其他任何操作系统相比都没什么特别之处。 Xcode还附带了大量有用的工具来帮助您。我建议你使用Instruments中的分配工具,使用僵尸,使用guardmalloc,用lldb附加到进程,触发崩溃。
查看分配以查看分配位置并跟踪其生命周期。
使用lldb计算出值并检查调用堆栈。
答案 1 :(得分:0)
这种情况对我们来说会发生,苹果的旋转动画开始出现,然后滞后,然后整个手机重新启动。似乎苹果在方向改变时内置的旋转动画存在内存管理问题。您可以通过在主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];
}