バンドル


バンドルは、グループが実行可能なコードや画像や音声などの関連リソースと1つの場所に一緒にするファイルシステム内のディレクトリです。iOS と OS X では、アプリ、フレームワーク、プラグイン、その他のソフトウェアのタイプは、バンドルです。バンドルは、実行可能コードとそのコードが使用するリソースを保持する標準化された階層構造を持つディレクトリです。Foundation と Core Foundation は、バンドル内のコードとリソースを検索し、ロードするコードのための便宜を備えています。


注意:アプリは、サードパーティの開発者が iOS 上で作成できるバンドルの唯一のタイプです。


バンドルは、ユーザーと開発者にいくつかの利点をもたらします。それらは、アプリが簡単にインストールでき、また単にある場所から別の場所に移動することにより、ソフトウェアのアプリまたは他の部分を再配置することができるようになります。バンドルには、国際化の重要な要因もあります。バンドルの特別な名前のサブディレクトリにローカライズされたリソースを格納します。ローカライズされたリソースのプログラム的な便宜の外観は、ユーザーの言語設定に対応する場所にあります。


Xcode のプロジェクトのほとんどのタイプがあなたのため実行可能なビルドを作る際にバンドルを作成します。そのため、手作業でバンドルを作成する必要はほとんどありません。たとえそうだとしても、その構造とそれらの内部コードやリソースにアクセスするために理解しておくことが重要です。


バンドルの構造と内容


バンドルは、実行可能コード、画像、音声、nib ファイル、プライベート・フレームワークやライブラリ、プラグイン、ロード可能バンドル、または他のタイプのコードやリソースを含めることができます。また、情報プロパティリスト(Info.plist) と呼ばれる実行時構成ファイルが含まれています。これらの各項目は、バンドル構造内の適切な位置を占めています。イメージ、音声、および nib ファイルなどのようなリソースは、Resources のサブディレクトリ内に置かれます。それらは、ローカライズされたか、ローカライズされないかのいずれかになります。(ローカライズされた文字列の集合の文字列のファイルを含めて) ローカライズされたファイルは、lproj の拡張子を持つ Resources のサブディレクトリに置かれ、おそらくロケールの言語に対応する名前を持ちます。


bundle



バンドルリソースへのアクセス


各アプリは、アプリコードを含むバンドルであるメインバンドルを有しています。ユーザーがアプリを起動すると、メインバンドルにコードとリソースを発見し、即剤に必要なそれらをメモリにそれらをロードします。その後、アプリはメインバンドルまたは下位バンドルから必要に応じ、動的に(ゆっくりと)コードとリソースをロードします。


NSBundle クラスは、手続き型コードでは、Core Foundation の CFBundleRef の opaque(不透明)タイプであり、アプリケーションに、バンドル内のリソースを検索するための手段を与えます。Objective-C では、物理的なバンドルに対応しては NSBundle のインスタンスを取得する必要があります。アプリケーションのメインバンドルを取得するには、クラスメソッドの mainBundle を呼び出します。ファイル名、拡張子、および(オプションで) バンドルのサブディレクトリを指定したとき、他の NSBundle メソッドは、バンドルリソースへのパスを返します。リソースへのパスを取得した後は、適切なクラスを使用してメモリにロードできます。


ロード可能なバンドル


アプリンバンドルと同じように、ロード可能なバンドルのパッケージの実行可能コードおよび関連リソースは、実行時にはこれらのバンドルを明示的にロードします。高度なモジュラー、カスタマイズ可能な、拡張可能なアプリケーションを設計するためにロード可能なバンドルを使用できます。すべてのロード可能なバンドルは、バンドルのエントリポイントである 主要なクラス があります。バンドルをロードするときは、主要なクラスには NSBundle を投げかけて、クラスのインスタンスを作成するために返された Class のオブジェクトを使用しなければなりません。


前提条件の記事

メッセージ


関連記事

プロパティリスト

Nib ファイル


既出の議論

バンドルについて






次の章
前の章
目次
Xcode の新機能

インターフェースビルダー ヘルプ
NSObject(class)
概要(NSObject,class)

  • アクセシビリティ
  • VoiceOver での作業
  • アクセサメソッド
  • 命名規則
  • アプリ ID
  • 明示的なアプリ ID は、一つのアプリに一致
    ワイルドカードアプリ ID は複数のアプリに一致
    アプリコード署名
  • ブロックオブジェクト
  • ブロックの宣言
    ブロックの作成
    変更可能なブロックの変数
    ブロックを使用する
    比較演算
  • バンドル
  • バンドルの構造と内容 バンドルリソースへのアクセス
    ロード可能なバンドル
  • カテゴリ
  • 宣言
    実装
  • クラスクラスタ
  • 利点
    検討事項
  • クラスの定義
  • インターフェース
    実装(Implementation)
  • クラスメソッド
  • サブクラス
    インスタンス変数
    self
  • ココア(タッチ)、Cocoa(Touch)
  • フレームワーク(Framework)
    言語
    コーディング規則
  • コレクション(Collection)
  • コレクションクラス
    順序付けスキーム
  • コントローラーオブジェクト
  • コントローラの調整
    ビューコントローラ
    仲介コントローラ(OS X)
    宣言されたプロパティ
  • デリゲート(Delegate)
  • デリゲートとココアフレームワーク
    デリゲートと通知
    データソース
    動的バインディング
  • 動的型付け
  • isa ポインタ
  • 列挙
  • NSEnumerator
    高速列挙
  • 例外処理
  • 例外の種類
    コンパイラディレクティブを使用した例外処理
    信号伝達のエラー
    フレームワーク
    情報プロパティリスト
  • 初期化
  • イニシャライザ宣言の型
    初期化子を実装
    国際化
  • 内観(イントロスペクション)
  • イントロスペクション情報の種類
  • キー値コーディング
  • オブジェクトのプロパティと KVC
    クラスを KVC に準拠させる
  • キー値監視
  • KVO の実装
    KVO はバインディングの不可欠な部分(OS X)
  • メモリ管理
  • メモリ管理の規則
    メモリ管理の側面
    メッセージ
    メソッドのオーバーライド
  • モデルオブジェクト
  • うまく設計されたモデルクラス
  • モデル・ビュー・コントローラ
  • モデルオブジェクト
    ビュー・オブジェクト
    コントローラオブジェクト
  • 複数のイニシャライザ
  • 指定イニシャライザ
    Nib ファイル
  • 通知
  • 通知オブジェクト
    通知を観察する
    通知を投稿
  • アーカイブ
  • 鍵付き連続アーカイバ
    鍵付きアーカイブの作成とデコード
  • オブジェクトの比較
  • 比較ロジックを実装する
  • オブジェクトのコピー
  • オブジェクトコピーのための要件
    メモリ管理への影響
  • オブジェクト作成
  • オブジェクト作成式の形式
    メモリ管理への影響
    ファクトリメソッド
  • オブジェクトの暗号化
  • オブジェクトの暗号化と復号化する方法
    キー付き対連続的アーカイブ
    オブジェクトグラフ
    オブジェクトのライフサイクル
    オブジェクトモデリング
  • オブジェクト可変性(mutability)
  • 可変オブジェクトを受け取る
    可変オブジェクトを格納
    オブジェクトの所有権
    Objective-C
  • プロパティ(特性)リスト
  • プロパティリストの型とオブジェクト
    プロパティリストのベストプラクティス
    プロパティリストのシリアライズ
  • プロトコル
  • 公式、非公式なプロトコル
    正式なプロトコルを採用、準拠
    独自のプロトコルを作成
    ルートクラス
  • セレクタ
  • セレクタの取得
    セレクタの使用
    シングルトン
  • 統一された型の ID
  • UTI は逆ドメイン·ネーム·システム規則を使用
    統一された型 ID は適合階層で宣言
    OS X のアプリは、アプリバンドルでそれらを定義して新しい UTIを追加
  • 値オブジェクト
  • NSValue