1

新しい XCode7 beta4 でプロジェクトを実行しようとしましたが、シミュレーターを実行した直後にこの例外が発生します。

Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:],/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3491.2.5/UIApplication.m:3173 

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'

メイン ウィンドウの rootViewVontroller の設定に問題がある可能性があることを読みましたが、AppDelegate.m ファイルのコードは次のとおりです。

[self.tabBarController setViewControllers:tabViewControllers];

[self.tabBarController setCustomizableViewControllers:customizableControllers];

[self.window setRootViewController:self.tabBarController];

ここで、tabBarController クラスはカスタム UITabViewController です。プロジェクトで .xib ファイルを使用しないでください。誰も私がどのように進めることができるか考えていますか?

前もって感謝します

4

4 に答える 4

1

[self.window makeKeyAndVisible] の後に self.window.rootRootController を設定すると、この問題が解決する場合があります。

これは私のために働いた

于 2015-09-22T13:48:03.413 に答える
1

PowerVR からのサンプル コード、場合によっては Apple からのサンプル コードでさえ、ほぼすべてで同じ問題がありました。

これは iOS 9 の問題だと思います (9 はこの点で厳しいようです)。iOS 9 に準拠するために、アプリケーションの起動が完了する前のある時点で setRootViewController を呼び出す必要があります。

特に古いコードで先に進むために、iOS 8.4 および iOS 8.1 シミュレーターをダウンロードしました。それらをまったく同じコードでターゲットにすると、古い Xcode ビルドの場合と同様に、機能するプロジェクトが得られました。

同様の結果がデバイスでも発生します。iOS 9 より前の OS のデバイスをターゲットにすると、通常の動作になります (ただし、コンソールにはルート ビュー コントローラーに関する苦情が表示されます (アプリケーション Windows にはルート ビュー コントローラーが必要であると表示されます))、アプリは実行されます。

これは非推奨の設計要件のようです。以前のバージョンでは、ルート ビュー コントローラなしでコードを実行することの「許可」が警告されていたようですが、iOS 9 の時点では、正式に必要になっているようです。

一部のコードにはそのような規定がないため、たとえば、SDK 3.5 (かなり最近 - 2015 年 9 月 12 日の最新リリース) の PowerVR サンプル コードでは、何らかのビュー コントローラーを作成する必要があります (それらのコードは表示されません)。持っていること)。

于 2015-09-12T17:27:04.097 に答える
1

問題は Xcode 7.0 で発生しました。解決策は、main.mファイル内のこのコードを置き換えます。

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
于 2015-09-28T09:25:49.867 に答える