4

App Delegate ファイルに次のコードがあります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MBFeedViewController *feedViewController = [[MBFeedViewController alloc] init];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:feedViewController];
    [self.window makeKeyAndVisible];
    return YES;
}

次に、アプリを実行すると、コンソールに次のメッセージが出力されます。

アプリケーション ウィンドウには、アプリケーションの起動の最後にルート ビュー コントローラーがあることが期待されます。

これを理解することはできません。 ウィンドウの を設定したときでFeedViewControllerはありません。nilRootViewController

4

1 に答える 1

3

これを理解することはできません。ウィンドウの rootviewcontroller を設定すると、feedViewController は nil ではありません。

ビュー コントローラを適切に初期化していることを確認してください。指定イニシャライザを使用するのが最も一般的-initWithNibName:bundle:です。initH2CO3 もそれでいいと指摘しています。[super initWithNibName:... bundle:...]いずれにせよ、またはを呼び出してスーパークラスも初期化していることを確認してください[super init]

次に、それfeedViewController.viewが nil でないことを確認します。ウィンドウのルート ビュー コントローラーを設定すると、ウィンドウはそのコントローラーのビューを独自のコンテンツとしてインストールします。通常、View Controller はそのプロパティが初めてviewアクセスされたときnilにビューを作成するため、ビューの作成に失敗しない限り、そこに到達する必要はありません。

最後に、単純な古いものをインスタンス化し、それをウィンドウのルート ビュー コントローラーとしてUIViewController設定してみてください。同じ警告が表示されますか? はいの場合は、バグに遭遇した可能性があります。いいえの場合は、ビュー コントローラの初期段階で呼び出される初期MBFeedViewController化子、-loadView、およびその他のメソッドを注意深く調べてください。-viewDidLoad

于 2013-03-09T07:42:58.127 に答える