web-dev-qa-db-ja.com

Objective-CのNSBundleとmainBundleとは何ですか?

IOSアプリケーションのObjective-Cに関して、Apple開発者のWebサイトでサンプルプログラムを読んだところ、ほとんどすべてのアプリケーションに 'NSBundle ' および 'mainBundle ' 、およびIこの言葉の意味が本当にわかりません。それは何ですか。

28
Questions

バンドルは、Mac OS Xでソフトウェアをパッケージ化するために使用される構造です。アプリケーション、フレームワーク、およびプラグインはすべて異なる種類のバンドルです。バンドルには、必要に応じて、実行可能コード、リソース、ヘッダーファイル、およびその他のもの(他のバンドルを含む)を含めることができます。

バンドルは、定義された構造を持つディレクトリツリーとして実装されます。アプリケーション、フレームワーク、およびプラグインはそれぞれ、ツリーの構造に独自のバリエーションがあります。ただし、Finderからは、バンドルは単一のファイルのように見えます。

メインバンドルは、単に実行中のアプリケーションのバンドルです。したがって、たとえば、Appleメールプログラムのメインバンドルは/Applications/Mail.appです。

29
JeremyP

コードが次のようになっているとします。

NSString *myFile=[[NSBundle mainBundle]pathForResource:@"subjects" ofType:@"plist"];

Xcodeでsubject.plistを作成し([ファイル]> [新規]> [新しいファイル]> [iOS]> [リソース]> [プロパティリスト])、サポートフォルダーにコピーします。

これは、iOSデバイスにインストールされているファイルシステムが何であるかわからない場合に、それを取得する方法です。これは、アプリケーションの内部バンドルまたは内部パッケージの一部であるsubject.plistファイルを取得する方法です。 iOSデバイスのファイルシステムに直接アクセスすることはできないため、これが私たち自身の資産を取得する方法です。

5
Shan

良いAppleバンドルに関するドキュメントがあります。 バンドルプログラミングガイド

1
V1ru8