Cocoa アプリケーションを作成したとしましょう。AppDelegate.h、AppDelegate.m、MainMenu.xib の 3 つのファイルがあります。
何も触らずにアプリを実行すると、何も書いていないにもかかわらず、コンパイラは実際に AppDelegate.h と AppDelegate.m をコンパイルしますか?
コンパイラはどのファイルを含めるかをどのように認識しますか?
Cocoa アプリケーションを作成したとしましょう。AppDelegate.h、AppDelegate.m、MainMenu.xib の 3 つのファイルがあります。
何も触らずにアプリを実行すると、何も書いていないにもかかわらず、コンパイラは実際に AppDelegate.h と AppDelegate.m をコンパイルしますか?
コンパイラはどのファイルを含めるかをどのように認識しますか?
あなたの質問は非常に一般的ですが、高レベルの詳細のいくつかをスケッチします. Xcode で新しいプロジェクトを作成するときは、そのベースとなるプロジェクト テンプレートを選択します。あなたの場合、単純な Cocoa Application テンプレートを使用したようです。これにより、AppDelegate.h、AppDelegate.h、および MainMenu.xib と共に、プロジェクト ナビゲーターの "Supporting Files" フォルダーの下にリストされている他のいくつかのファイルが提供されます。それらのいくつかについては後で説明します。最初に、新しいプロジェクト ディレクトリの最上位に、MyProject.xcodeproj のような名前のファイルがあることに注意してください。これは、実際には 1 つのファイルのようにパッケージ化されたディレクトリであり、その中には project.pbxproj という名前のファイルがあります。このファイルは、ビルドのすべての設定を含む XML ファイルです。シンプルなアプリケーションを構築するために、プロジェクト テンプレートによって事前に構成されています。デフォルトの project.pbxproj で指定されている基本的なビルド プロセスは次のとおりです。
main.m を見ると、古いスタイルの main.c によく似ていることに気付くでしょうNSApplicationMain()
。この関数は、最終的に、プロジェクトの Info.plist にリストされている「プリンシパル クラス」のインスタンスを作成します。デフォルトNSApplication
では、Cocoa が提供する標準クラスです。次に、「メイン nib ファイルのベース名」がロードされます。これは、プロジェクトの MainMenu.xib です。nib ファイルは基本的に、インスタンス化され、それらの間で接続が行われる「凍結乾燥オブジェクト」の集まりです。MainMenu.xib ファイル内のオブジェクトの 1 つは のインスタンスでありAppDelegate
、このコードがメモリに読み込まれる方法です。既定のテンプレートではAppDelegate
は何も実行せず、MainMenu.xib には標準のアプリケーション メニュー バーと空白のウィンドウだけが含まれています。これは、アプリケーションを実行すると表示されるものです。
1 行のコードを記述する前に、これらすべてを出発点として無料で入手できます。この時点で、Cocoa のコーダーは通常AppDelegate
、UI の他の部分の .xml ファイルの入力、新しいクラスの作成、または新しい nib ファイルの追加を開始します。