-4

这是我的崩溃日志。

2012-09-24 00:06:16.711 DMJ[10021:c07] -[DMJAppDelegate application:supportedInterfaceOrientationsForWindow:]: unrecognized selector sent to instance 0x84abe70
2012-09-24 00:06:16.713 DMJ[10021:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DMJAppDelegate application:supportedInterfaceOrientationsForWindow:]: unrecognized selector sent to instance 0x84abe70'
*** First throw call stack:
(0x2553012 0x1e04e7e 0x25de4bd 0x1e187ea 0x2542cf9 0x254294e 0x82a332 0x91266d 0x90d046 0x90d246 0x85601f 0x476e8e 0x4769b7 0x875573 0x4a1428 0xa420cc 0x1e18663 0x254e45a 0xa40bcf 0xa4298d 0x824ceb 0x825002 0x823ed6 0x835315 0x83624b 0x827cf8 0x2c88df9 0x2c88ad0 0x24c8bf5 0x24c8962 0x24f9bb6 0x24f8f44 0x24f8e1b 0x8237da 0x82565c 0x2ded 0x2d25 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb)
4

2 回答 2

5

协议上下文中的可选意味着您不需要实现该方法。但是你也必须注意不要调用这些方法,否则你会得到一个异常。通常在调用可选协议方法之前,您会执行以下操作:

if ([object respondsToSelector:@selector(application:supportedInterfaceOrientationsForWindow:)])
    result = [object application:myApp supportedInterfaceOritentationsForWindow:myWin];

如前所述,该方法可能会被调用,因为您的 info.plist 不包含正确的键(UIInterfaceOrientation)。

于 2012-09-23T15:31:03.360 回答
0

你确定你的 Delegate 类符合 UIApplicationDelegate 协议了吗?

DMJAppDelegate.h应该有

@interface DMJAppDelegate : NSObject <UIApplicationDelegate> 

也如关于 UIApplicationDelegate 的Apple Developer Documentation中所述,如果您的应用程序 Info.plist 没有UIInterfaceOrientation指定有效方向的键,那么它将调用supportedInterfaceOrientationsForWindow委托(因此在这种情况下不是可选的),因此您需要确保您'如果你没有实现委托方法,你已经在你的 Info.plist 中指定了方向

当您打开 Info.plist 时,它应该在 Xcode 中指定(如果您正在开发通用应用程序,则为 iPhone 和 iPad 分开)

Xcode Info.plist 方向

或者,您可以通过在项目摘要中选择目标来查看支持的界面方向

Xcode 项目总结

于 2012-09-23T15:21:45.943 回答