自分のiPhone 4でXcode 7.3.1を使用して元の(Objective-C)Master-Detail Applicationテンプレートを実行したときに、そのデバイスで最新のiOS(7.1.2)が実行された場合、クラッシュします。おそらく、iOS 9.3に設定されているBase SDKを変更することはできませんが、適切なアーキテクチャと展開ターゲットを使用しています。なぜクラッシュするのですか?iOS 7.1.2を実行しているiPhone 4でMaster-Detail Applicationテンプレートがクラッシュするのはなぜですか?
コードをクラッシュ:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
/**CRASH**/navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
splitViewController.delegate = self;
return YES;
}
デバッガは言う:
2016-08-04 21:14:26.240 Master-Detail-Application-2[766:60b] -[MasterViewController topViewController]: unrecognized selector sent to instance 0x16d61c20
2016-08-04 21:14:26.246 Master-Detail-Application-2[766:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MasterViewController topViewController]: unrecognized selector sent to instance 0x16d61c20'
*** First throw call stack:
(0x30dbef83 0x3b56fccf 0x30dc2917 0x30dc1203 0x30d10768 0x396a7 0x3364b587 0x3364aedb 0x3364556b 0x335e16e9 0x335e0851 0x33644ca9 0x35bf9aed 0x35bf96d7 0x30d89a67 0x30d89a03 0x30d881d7 0x30cf2ebf 0x30cf2ca3 0x33643ed1 0x3363f14d 0x3a945 0x3ba7cab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
'topViewController'は、' UIViewController'ではなく、 'UINavigationController'のメソッドです。 – rmaddy
@maddyこれはコードから見たものですが、それは正しいです。 –
しかし、エラーは 'UINavigationController'ではなく' MasterViewController'で 'topViewController'を呼び出そうとしていることを示しています。 – rmaddy