ios8在_updateInterfaceOrientationFromDeviceOrientation上崩溃

时间:2014-09-23 18:09:04

标签: ios crash ios8

在我的日志服务中遇到了很多这种崩溃。任何提示?我的应用程序仅支持纵向模式。

线程:崩溃:com.apple.main-thread

0  libobjc.A.dylib                0x32bfbf46 objc_msgSend + 5
1  UIKit                          0x289ba531 -[UIWindow _updateInterfaceOrientationFromDeviceOrientation:] + 152
2  CoreFoundation                 0x254d44a1 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
3  CoreFoundation                 0x2543093d _CFXNotificationPost + 1784
4  Foundation                     0x261609b9 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
5  UIKit                          0x289ba2f3 -[UIDevice setOrientation:animated:] + 318
6  UIKit                          0x289ba0a3 -[UIApplication handleEvent:withNewEvent:] + 1566
7  UIKit                          0x289b99c1 -[UIApplication sendEvent:] + 72
8  UIKit                          0x28a1e801 _UIApplicationHandleEvent + 632
9  GraphicsServices               0x2c79d679 _PurpleEventCallback + 528
10 GraphicsServices               0x2c79d2c3 PurpleEventCallback + 34
11 CoreFoundation                 0x254e1dab __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
12 CoreFoundation                 0x254e1d47 __CFRunLoopDoSource1 + 346
13 CoreFoundation                 0x254e0349 __CFRunLoopRun + 1608
14 CoreFoundation                 0x2542e621 CFRunLoopRunSpecific + 476
15 CoreFoundation                 0x2542e433 CFRunLoopRunInMode + 106
16 GraphicsServices               0x2c79c0a9 GSEventRunModal + 136
17 UIKit                          0x28a18809 UIApplicationMain + 1440
18 simplyUs                       0x00052013 main (main.m:14)

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

可能我的情况与你的相似。一些解除分配的控制器仍然收到方向通知。当我在动作表委托方法中呈现控制器时,我崩溃了:

actionSheet:clickedButtonAtIndex:

但是当控制器出现在

之内时
actionSheet:didDismissWithButtonIndex:

现在一切正常。我认为当窗口在顶部时,我们应该在窗口中显示控制器。因此,在iOS8中显示控制器之前,应该关闭所有警报视图/操作表窗口。否则它仍然会收到方向通知。

答案 1 :(得分:0)

除了崩溃跟踪之外,如果您有更多与崩溃相关的信息,这将有所帮助。我怀疑问题出在消息传递解除分配的对象上;一个告诉我的例子是从NSNotification崩溃。您可以尝试启用僵尸(编辑模式中的诊断选项卡),这可以确定是否是这种情况。

要仔细检查方向支持,我建议在https://developer.apple.com/Library/ios/featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html中说明的方法中设置断点 如果你已经实现了它们。

最后一点需要注意的是,在iOS 8中,他们修复了以前iOS版本中的一些关键方法,错误地忽略了当前的方向,例如状态栏的高度/宽度  [UIApplication sharedApplication].statusBarFrame.size.height

这意味着许多代码(包括来自第三方库的代码)都有代码来解决原始问题,现在需要在iOS 8中禁用代码。例如,代码将从逻辑中挂钩,例如查看状态栏高度很大,并得出结论,该系统处于风景中。