iOS支持的接口定向循环崩溃

iOS支持的接口定向循环崩溃,ios,objective-c,iphone,uiwindow,Ios,Objective C,Iphone,Uiwindow,我收到这个错误,不知道是什么原因造成的。iPhone和iPad上的iOS 8.2都出现了这种情况 Crashed: com.apple.main-thread EXC_BAD_ACCESS KERN_PROTECTION_FAILURE at 0x00554ff4 raw 0 libobjc.A.dylib lookUpImpOrForward + 3 4 libobjc.A.dylib -[NSObject respondsToSelector:] + 38 5 UIKit -[UIW

我收到这个错误,不知道是什么原因造成的。iPhone和iPad上的iOS 8.2都出现了这种情况

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_PROTECTION_FAILURE at 0x00554ff4 raw
0 libobjc.A.dylib   lookUpImpOrForward + 3
4 libobjc.A.dylib   -[NSObject respondsToSelector:] + 38
5 UIKit -[UIWindow _supportedInterfaceOrientationsForRootViewController] + 56
6 UIKit -[_UIFallbackPresentationViewController supportedInterfaceOrientations] + 60
7 UIKit -[_UIFallbackPresentationViewController supportedInterfaceOrientations] + 60
...
510 UIKit -[_UIFallbackPresentationViewController supportedInterfaceOrientations] + 60
我读到一些人认为这应该解决这类问题,但它不起作用

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if ( IDIOM == IPAD ) {
        return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;

    } else {
        return UIInterfaceOrientationMaskPortrait;
    }
}

您必须在您的Viewcontroller中添加以下方法

-(NSUInteger)supportedInterfaceOrientations{
    return yes for supported orientations
}

下面的代码对我来说很好

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

return UIInterfaceOrientationMaskLandscape;

} 
如果它不能解决您的问题,我认为您的代码的其他部分是有缺陷的

  • 您可以创建一个空项目,然后在该项目上尝试代码
    (NSUInteger)应用程序:(UIApplication*)应用程序支持的InterfaceOrientionsforWindow:(UIWindow*)窗口
    ,查看是否发生问题只是为了隔离bug

  • 检查代码中是否正确设置了变量IDIOM和IPAD

#定义惯用语UI\u用户界面\u惯用语()

#定义IPAD UIUserInterfaceIdiomPad

  • EXC_BAD_访问是由非法内存访问导致的,您可能正在访问已解除分配的变量

  • 检查所有指针,尤其是对象指针,以确保它们 初始化。如果您正在使用xib,请确保已正确设置, 所有必要的连接

  • 如果这些都不起作用,请尝试使用NSLog()查找错误 语句并找到导致错误的行,然后设置 断点并检查其中的所有变量和对象,以查看是否有任何不符合预期的情况

希望这有帮助。
请随意问我这个问题是否仍然没有解决

我最后就这个问题联系了苹果公司。根据他们的说法,这与游戏中心有关。苹果改变了一些东西,游戏中心的旧初始化方式会导致随机崩溃。在我的游戏中添加了一个,这些随机崩溃就停止了。

如上所述,我已经在AppDelegate中添加了
接口定向功能
,应该做同样的事情。我正在使用这些代码,我没有收到任何错误-(NSInteger)应用程序:(UIApplication*)应用程序支持的InterfaceOrientionsForWindow:(UIWindow*)窗口{return UIInterfaceOrientationMaskLandscape;}您是否仅在iOS 8.2或所有其他版本中观察到此问题?它发生在其他版本上。到目前为止,我有来自iOS 7.1、8.1、8.2的报告,我已经发布了我的答案,请查看,如果您有任何疑问,请随时问我您是否在任何地方再次创建窗口?当你在appdelegate中写的时候,它应该可以工作。顺便说一句,如果你检查这个问题,你可以在xcode接口上设置这个值,我有这个方法,它工作得很好。问题在于,由于某种原因,旋转有时会进入一个无限循环,从而导致该错误。这个错误并不经常发生。目前已影响0.1%的my用户。我只是想知道是什么导致了这个循环。@rob180-你能重现这个问题吗?如果可以,我们可能可以从xcode运行应用程序,设置断点并解决问题。您是否找到导致问题的先决条件?用符号来表示撞车日志,看看你能不能从中得到一些有用的信息?问题是我不能复制它。我很少遇到无法跟踪的情况。在3个位置,必须正确处理方向1)确保您已将方向正确放入。plist或Target Summary屏幕2)您已将方向处理代码放入app delegate中,因此无需担心3)确保您已在all view中处理方向这里的控制器是一个示例代码,以防
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{return UIInterfaceOrientationAndScapeRight;}-(BOOL)应该自动旋转{return YES;}-(NSInteger)支持的接口方向{return UIInterfaceOrientationMaskLandscape;}
能否请您澄清到底是什么原因导致了碰撞?我使用一些遗留代码来初始化GC(C++库),它工作得很好,但是正在生成这些崩溃。Thx.我不是100%确定,但我非常确定这是因为视图出现在随机位置。为什么不使用上面的框架呢?它解决了我所有的问题。