奇妙な動作を見つけました。どの主張が間違っているかを説明してもらいたいです。
新しく作成した WindowBased プロジェクトの AppDelegate クラスで、ウィンドウに UIViewController を追加しています。
私はそれを 2 つの異なる方法で行うことができます: 
 - IBOutlet を使用します。IB では、単純に UIViewController をインスタンス化し、そのクラスを TestViewController に設定して接続しました (コードのシナリオ A)。
 - コードを使用して UIViewController を作成する (シナリオ B)。  
    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
#define USE_IBOUTLET YES // Comment this line to switch to scenario B
#ifdef USE_IBOUTLET
    // Scenario A
    [window addSubview:theTestViewController.view];
    [window makeKeyAndVisible];
#endif
#ifndef USE_IBOUTLET
    // Scenario B
    TestViewController *theTestViewControllerProgrammatically;
    theTestViewControllerProgrammatically = [[TestViewController alloc] initWithNibName:nil bundle:nil];
    // According to Apple: "It is a good idea to set the view's frame before adding it to a window.", so let's do it
    [theTestViewControllerProgrammatically.view setFrame:[[UIScreen mainScreen] applicationFrame]];
    [window addSubview:theTestViewControllerProgrammatically.view];
    [window makeKeyAndVisible];
#endif
}
IB でオブジェクトのカスタマイズを行っていないため、両方のシナリオで同じ動作になるはずです。
シナリオ A、IBOutlet を使用すると、期待どおりに動作します。
ただし、シナリオ B には次の問題があり
 ます。
 - ビューのサイズが適切に変更されない (たとえば、通話中ステータス バーを切り替えようとする)  
なんで?
問題を再現したい場合は、プロジェクトの zip アーカイブをこちらからダウンロードしてください: http://dl.dropbox.com/u/1899122/code/ProtoWindowBasedStrangeness.zip