-4

Cocoa アプリケーションを作成したとしましょう。AppDelegate.h、AppDelegate.m、MainMenu.xib の 3 つのファイルがあります。

何も触らずにアプリを実行すると、何も書いていないにもかかわらず、コンパイラは実際に AppDelegate.h と AppDelegate.m をコンパイルしますか?

コンパイラはどのファイルを含めるかをどのように認識しますか?

4

1 に答える 1

3

あなたの質問は非常に一般的ですが、高レベルの詳細のいくつかをスケッチします. Xcode で新しいプロジェクトを作成するときは、そのベースとなるプロジェクト テンプレートを選択します。あなたの場合、単純な Cocoa Application テンプレートを使用したようです。これにより、AppDelegate.h、AppDelegate.h、および MainMenu.xib と共に、プロジェクト ナビゲーターの "Supporting Files" フォルダーの下にリストされている他のいくつかのファイルが提供されます。それらのいくつかについては後で説明します。最初に、新しいプロジェクト ディレクトリの最上位に、MyProject.xcodeproj のような名前のファイルがあることに注意してください。これは、実際には 1 つのファイルのようにパッケージ化されたディレクトリであり、その中には project.pbxproj という名前のファイルがあります。このファイルは、ビルドのすべての設定を含む XML ファイルです。シンプルなアプリケーションを構築するために、プロジェクト テンプレートによって事前に構成されています。デフォルトの project.pbxproj で指定されている基本的なビルド プロセスは次のとおりです。

  • AppDelegate.m と main.m をコンパイルする
  • オブジェクト コードを依存フレームワークと一緒にリンクする
  • 実行可能ファイルを、MainMenu.xib などのプロジェクトに含まれる他のリソースと共に、アプリケーション バンドルと呼ばれる特別なディレクトリ構造に配置します。
  • その後、Finder は、新しくアセンブルされたアプリケーション バンドルを起動できます。

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 ファイルの追加を開始します。

于 2012-08-04T07:01:55.690 に答える