Cocoaにおけるロード可能バンドル
Cocoaランタイム環境用に作成されたロード可能バンドルは、2〜3個のCocoaに特有な事項を持ちます。
バンドルはCocoa用に記述されているので、Objective-Cクラスのコードを含みます。
特に、全てのCocoaロード可能バンドルは代表クラス(principal class)を持ちます。
NSBundleクラスによって提供されるコード読込みメカニズムは、バンドルの代表クラスをエントリーポイントとして使用します。
バンドルを読込むアプリケーションはNSBundleに問い合わせ、代表クラスを見つけることが出来ます。そして返ってきたClass
オブジェクトを用いて、そのクラスのインスタンスを生成します。
NSBundleは2つの方法のうちのどちらかを用いて代表クラスを見つけます。
1つ目は、バンドルの情報プロパティリストに含まれるNSPrincipalClass
キーを探します。
キーが存在すれば、キーの値をそのバンドルの代表クラス名として用います。
キーが存在しないかキーが指定するクラスがなければ、NSBundleは最初に読込まれたクラスを代表クラスとします。
Xcodeでビルドされたバンドルであれば、プロジェクトのビューで表示されているクラスの順番がバンドル読込み時の順番となります。