-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.plistUIInterfaceOrientationに有効な向きを指定するキーがないsupportedInterfaceOrientationsForWindow場合、デリゲートに が呼び出されます (したがって、この場合はオプションではありません)。 'デリゲート メソッドを実装していない場合は、Info.plist で方向を指定しました

これは、Info.plist を開いたときに Xcode 内で指定する方法です (ユニバーサル アプリを開発している場合は、iPhone と iPad で別々です)。

Xcode Info.plist の向き

または、プロジェクトの概要でターゲットを選択して、サポートされているインターフェイスの方向を確認できます。

Xcode プロジェクトの概要

于 2012-09-23T15:21:45.943 に答える