translation:adc:cocoa:foundation:introduction_to_dynamically_loading_code:0800_creatingbundles

読込み可能バンドルの作成

本章では、XcodeによるCocoaの読込み可能バンドル─アプリケーションコンポーネントやプラグイン─の作り方を解説します。

Xcodeは読込み可能バンドル作成用のグラフィカルなツールを提供します。 読込み可能バンドルのビルドはアプリケーションのビルドと非常に良く似ています。 工程はは基本的な3つのステップから構成されます:

  1. Xcodeテンプレートから新規プロジェクトを作る
  2. ソースファイルを準備し編集する
  3. バンドルに関する情報にあわせてプロジェクト設定を変更する

以後の節でこれら工程の詳細を解説します。

読込み可能バンドルプロジェクトの作成は、アプリケーションプロジェクトの作成と大変良く似ています。適切なプロジェクトテンプレートを選択するだけです。 読込み可能バンドルプロジェクトを作成するには、以下の手順を踏みます:

  1. Xcodeを起動
  2. 「ファイル」メニューから「新規プロジェクト…」を選択
  3. テンプレートリストから「Cocoa Bundle」を選択
  4. 「次へ」をクリック
  5. プロジェクトの保存場所を選択し「完了」をクリック

Cocoa Bundleテンプレートから作成した新規プロジェクトは1つのソースファイル、main.cとCocoaフレームワークへの参照を持っています。 殆どの場合、開発者はこのファイルを削除し、自分のソースを追加することでしょう。 Cocoaアプリケーションがそうであるように、新しいCocoaクラスや他のソースファイルの追加と同様、リソースやフレームワークの追加が可能です。

Cocoaにおける最小の読込み可能バンドルは、2つのファイル─1つがインタフェース(MyClass.h)で、もう1つが実装ファイル(MyClass.m)─による1つのクラスで構成されます。 ターゲット設定の変更で記述のあるように、バンドル内のクラスのうち1つを主要クラスに設定するべきです。 主要クラスが選択されていなければ、NSBundleは(Xcodeウィンドウに表示される)プロジェクトの最初のクラスを主要クラスとして使用します。

読込み可能バンドルがプラグインの場合、ホストアプリケーション開発者は大抵、フレームワークの中でプラグインアーキテクチャのインタフェースを提供します。 このフレームワークは典型的に、全てのプラグインの主要クラスが継承するクラス、ないし主要クラスが採用する(形式または非形式の)プロトコルを持ちます。

バンドルが“善良なコンポーネント”(a good citizen)となるよう、バンドルの情報プロパティリストで2つの設定をする必要があります:

  1. バンドル識別子
  2. 主要クラス

バンドル識別子はシステム上の全てのバンドル─アプリケーション、カーネル拡張、全ての読込み可能バンドル、そしてその他の種類のバンドルで一意の識別子として働きます。 バンドル識別子はcom.apple.screensaver.Abstractのように、DNS風の名前を逆転させたものにしなければなりません。

主要クラスはCocoaバンドルのエントリーポイントとして働きます。 名前衝突の防止で解説するように、グローバルで一意となるような方法で名付けなければなりません。 主要クラスが選択されていなければ、NSBundleが勝手に選びます。

これら設定を変更するには、以下の手順を踏んで下さい:

  1. プロジェクトの「ターゲット」ペインを開く
  2. 「ターゲット」グループのターゲット一覧からバンドルを選ぶ
  3. Under Info.plist Entries > Simple View, select Basic Information.
  4. Enter the desired bundle identifier into the text field labeled “Identifier:”.
  5. Also under Info.plist Entries > Simple View, select Cocoa-Specific.
  6. Enter the name of the principal class into the text field labeled “Principal class:”.
  • translation/adc/cocoa/foundation/introduction_to_dynamically_loading_code/0800_creatingbundles.txt
  • 最終更新: 2020-12-04 13:36
  • by Decomo