1

xcodeで新しいプロジェクトを作成し、[ビューベースのアプリケーション]を選択すると、デリゲートとビューコントローラーのクラステンプレートが自動的に生成されます。これがDummyAppDelegate.hからの抜粋です

@class dummyViewController;

@interface dummyAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    dummyViewController *viewController;
}

私の主な質問は、インスタンス変数viewControllerはどこでインスタンス化されるのかということです。生成されたファイルにこのためのコードが表示されないので、InterfaceBuilderの接続によって自動的にインスタンス化されますか?

2番目の、より少ない質問は、@classが単純なものではなく上記のコードで使用されている理由です。

#include "dummyViewController.h"

どんな助けでも大歓迎です、どうもありがとう!

4

1 に答える 1

0

ウィンドウ、View Controller、およびアプリケーションデリゲートはすべてからロードされMainWindow.xibます。NIBファイルに配置したオブジェクトは、そのNIBファイルがロードされるとインスタンス化されます。また、アプリのInfo.plistでMainWindow.nibを指定することにより、UIApplicationアプリの起動時にそのファイルを自動的にロードするようにCocoa(実際にはインスタンス)に指示します。

この@class ...ステートメントは、いわゆる前方宣言です。これを使用するとコンパイル時間が短縮されるため、プログラミングの良い習慣と見なされます(インポートする必要のあるヘッダーファイルが少ないほど、コンパイル手順が速くなります)。

于 2011-01-03T19:08:59.970 に答える