XcodeのiPadシミュレーターで正常に動作するiPhoneおよびiPadユニバーサルアプリを作成しましたが、iPhoneの機能をテストしたいと思います。このコードでは常にデフォルトでiPadになっているため、iPhoneシミュレーターを実行できないようです。
代わりに、デバイスで実行しようとしましたが、実行を開始すると、次のエラーが発生します。
dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
Referenced from: /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/Test
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/TEST
アプリはXIBを使用するのではなくプログラムで構築されるため、main.mメソッドで次の行を使用して2つのデバイスロジックを分割しました。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Pad");
}
else
{
retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Phone");
}
その時点から、それらは異なるAppDelegatesを使用し、ヘッダーをチェックして、UISplitViewが電話ロジックを介して使用またはインポートされないことを確認しました。
このエラーを回避するにはどうすればよいですか。また、プログラムで作成されたこのアプリでユニバーサルロジックパスを分割するためのより良い方法はありますか?