macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

NSBundleクラス

INDEX>Foundation>NSBundle

バンドルクラス


編集時バージョン OS X 10.8 iOS 6.1

apple(mac)

apple(iOS)

継承 NSObject
準拠 NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 Mac OS X 10.0以降
iOS2.0以降
定義 NSBundle.h

解説

NSBundleオブジェクトはファイルシステムでプログラムが使うことの出来るコードやリソースのグループの場所を表します。

アプリケーションが使用する事のできるコードとリソースがあるファイルの場所を示します。
似たようなものでパッケージがありますが、パッケージは一つのファイルになっています。バンドル内は通常見えないようになっていて一つのファイルに見えますが、バンドル内はファイルやフォルダが存在している状態です。
アプリケーションバンドル、フレームワークプラグインなどバンドルにはいくつかの種類がありますが、ここでは主にアプリケーションバンドルについての説明をします。

バンドルの初期化

指定したURLからバンドルを作成するには(+ bundleWithURLメソッドを使います。パスで指定するメソッド+ bundleWithPath)もありますがURLで指定する方法が推奨されています。
作成したバンドルを初期化するメソッド– initWithURL)(– initWithPath)も用意されています。

NSBundle *bundleToLoad = [NSBundle bundleWithURL:[bundleURL URLByAppendingPathComponent:@"Settings.bundle"]];

バンドルの取得

指定したクラスが、どのバンドルに含まれるかを知るには(+ bundleForClassメソッドを使います。指定したバンドルIDでバンドルを探すには(+ bundleWithIdentifierメソッドを使います。バンドルIDはInfo.plistにキー"CFBundleIdentifier"で設定してある文字列(たとえば"com.oomori.NSBundle")です。

NSBundle *bundle = [NSBundle bundleWithIdentifier:@"com.oomori.NSBundle" ];

アプリケーションが動いているバンドルを取得するには(+ mainBundleメソッドを使います。アプリケーションのフレームワーク以外のバンドルを取得するには(+ allBundlesメソッドを使います。逆にアプリケーションが使っているフレームワークのバンドルを取得するには(+ allFrameworksメソッドを使います。

バンドルクラスの取得

クラスの名前からクラスを取得するには(– classNamedメソッドを使います。

リソースを探す

バンドルの指定したリソースの場所を取得するには(– URLForResource:withExtension:subdirectoryメソッドを使います。URLForResource:にはファイル名、withExtension:には拡張子、subdirectory:にはファイルが属するディレクトリを渡します。subdirectory:指定が無いメソッド– URLForResource:withExtension)もあります。(– URLForResource:withExtension:subdirectory:localization:)はローカライズ指定をすることができます。

NSBundle *bundle = [NSBundle mainBundle];
    NSString *retStr = [bundle localizedStringForKey:@"cancel" value:@"Don't find" table:nil];

指定の拡張子を持つリソースのURLを取得するメソッド– URLsForResourcesWithExtension:subdirectory)や、ローカライズ指定をすることが出来る(– URLsForResourcesWithExtension:subdirectory:localization:)があります。上記をURLではなく、パスで返すメソッドもあります。

バンドルディレクトリの取得

バンドルの場所を取得するメソッドも2つあります。URLで取得するメソッド– bundleURL)とパスで取得するメソッド– bundlePath)です。

NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];

バンドル情報の取得

バンドルIDを取得するには(– bundleIdentifierメソッドを使います。バンドルの情報を取得するには(– infoDictionaryメソッドを使います、バンドルのInfo.plistに書かれてある情報のうち現在の環境に適合しているものが取得できます。

NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *infoDic = [bundle infoDictionary];

Info.plistに記載されている情報から指定したキーの値を取得するには(– objectForInfoDictionaryKey:)メソッドを使います。値に応じて配列、文字列、数値などで返されます。

組み込みプラグインの場所を返すメソッドも(– builtInPlugInsURL)(– builtInPlugInsPath)と2つ用意されています。実行ファイルの場所は(– executableURL)(– executablePathメソッドで取得できます。
実行ファイル名を指定して含まれるフォルダの場所を返すメソッド– URLForAuxiliaryExecutable)(– pathForAuxiliaryExecutable)も2つあります。

NSBundle *bundle = [NSBundle mainBundle];
id obj = [bundle URLForAuxiliaryExecutable:@"NSBundle"];

プライベートフレームワークの場所を返すメソッド– privateFrameworksURL)(– privateFrameworksPath)、共有フレームワークの場所を返すメソッド– sharedFrameworksURL)(– sharedFrameworksPath)、共有サポートフォルダの場所を返すメソッド– sharedSupportURL)(– sharedSupportPath)などがあります。

画像や音声などリソースファイルの場所は(– resourceURL)(– resourcePathメソッドを使います。

NSBundle *bundle = [NSBundle mainBundle];
    id obj = [bundle resourceURL];

ローカライズリソースの管理

– localizedStringForKey:value:tableメソッドはバンドルから現在のローカライズ文字を指定のキーで探して返します。キーがなければvalue:に渡した文字列が使用されます。table:で指定しなければLocalizable.stringsが使用されます。

バンドルのコードのロード

バンドルを読み込むには(– loadメソッドや([loadAndReturnError:title=– loadAndReturnError:])メソッドを使います。現在読み込まれているかどうかを知るには(– isLoadedメソッドを使います。バンドルをメモリから破棄するには(– unload)メソッドを使います。
実行可能なアーキテクチャを知るには(– executableArchitecturesメソッドを使い、バンドルが実行可能かを検証するには(– preflightAndReturnErrorメソッドを使います。

ローカライズの管理

バンドルに含まれるローカライズ環境を取得するには(– localizationsメソッドを使います。使う事のできる環境が配列で返されます。
優先されるローカライズ環境を知るには(+ preferredLocalizationsFromArrayメソッドや(+ preferredLocalizationsFromArray:forPreferencesメソッドを使用します。

NSArray *array = [NSBundle  preferredLocalizationsFromArray:[[NSBundle mainBundle]  localizations]];

概要

適合するプロトコル

メソッド

NSBundleの初期化
+ bundleWithURL 10.6 4.0〜 指定のURLからバンドルを返します。
+ bundleWithPath 10.0 2.0 指定のパスからバンドルを返します。
– initWithURL 10.6 4.0〜 指定のURLからバンドルを初期化して返します。
– initWithPath 10.0 2.0〜 指定のパスからバンドルを初期化して返します。
NSBundleを取得
+ bundleForClass 10.0 2.0 クラスからバンドルを返します。
+ bundleWithIdentifier: 10.0 2.0〜 指定したIDのバンドルを返します。
+ mainBundle 10.0 4.0〜 メインバンドルを返します。
+ allBundles 10.0 2.0 フレームワーク以外のすべてのバンドルを返します。
+ allFrameworks 10.0 2.0 ロードされているすべてのフレームワークを返します。
バンドルされたクラスを得る
– classNamed 10.0 2.0〜 名前で指定したクラスを返します。
– principalClass 10.0 2.0〜 優先のクラスを返します。
リソースを探す
– URLForResource:withExtension:subdirectory 10.6 4.0〜 バンドルの指定したリソースの場所を取得
+ pathForResource:ofType:inDirectory 10.0 2.0〜 バンドルのリソースのフォルダから名前と拡張子でファイルを探してパスを返します。
– URLForResource:withExtension 4.0〜
– pathForResource:ofType 10.0 2.0〜
– URLsForResourcesWithExtension:subdirectory 10.6 4.0〜
– pathForResource:ofType:inDirectory 2.0〜
– URLForResource:withExtension: subdirectory:localization 4.0〜
– pathForResource: ofType:inDirectory:forLocalization 2.0〜
+ pathsForResourcesOfType:inDirectory 10.0 2.0〜
– pathsForResourcesOfType:inDirectory 10.0 2.0〜
– URLsForResourcesWithExtension: subdirectory:localization 2.0〜
– pathsForResourcesOfType: inDirectory:forLocalization 2.0〜
+ URLForResource:withExtension: subdirectory:inBundleWithURL 4.0〜
+ URLsForResourcesWithExtension: subdirectory:inBundleWithURL 4.0〜
– resourcePath 10.0 2.0〜
– appStoreReceiptURL 10.7
バンドルディレクトリを取得する
– bundleURL 10.6 4.0〜
– bundlePath 10.0 2.0〜
バンドル情報を得る
– bundleIdentifier 10.0 2.0〜
– infoDictionary 10.0 2.0〜
– objectForInfoDictionaryKey 10.2 2.0〜
– builtInPlugInsURL 10.6 4.0〜
– builtInPlugInsPath 10.0 2.0〜
– executableURL 10.6 4.0〜
– executablePath 10.0 2.0〜
– URLForAuxiliaryExecutable 10.6 4.0〜
– pathForAuxiliaryExecutable 10.0 2.0〜
– privateFrameworksURL 10.6 2.0〜
– privateFrameworksPath 10.0 2.0〜
– sharedFrameworksURL 10.6 4.0〜
– sharedFrameworksPath 10.0 2.0〜
– sharedSupportURL 10.6 4.0〜
– sharedSupportPath 10.0 2.0〜
– resourceURL 10.6 4.0〜
ローカライズリソースを管理
– localizedStringForKey:value:table 10.0 2.0〜
バンドルのコードをロード
– executableArchitectures 10.5 2.0 実行可能アーキテクチャを返します。
– preflightAndReturnError 10.5 2.0〜 バンドルが実行可能かを検証する
– load 10.0 2.0〜 ロードします。
– loadAndReturnError 10.5 2.0〜 ロードして結果を返します。
– isLoaded 10.2 2.0〜 バンドルはロードされているかを返します
– unload 10.5 2.0〜 アンロードします。
ローカライズを管理
+ preferredLocalizationsFromArray 10.0 2.0〜 優先されるローカライズを返します
+ preferredLocalizationsFromArray: forPreferences 2.0〜 ユーザー、バンドルの優先ローカライズを返します
– localizations 10.0 2.0〜 レシーバーのバンドルの範囲内で含まれる全てのローカライズのリストを返します。
– developmentLocalization 10.2 2.0〜
– preferredLocalizations 10.0 2.0〜 バンドル作成ローカライゼーションを返します。
– localizedInfoDictionary 10.2 2.0〜 ローカライズの情報を返します。

+ preferredLocalizationsFromArray:forPreferences: 10.2

+ URLForResource:withExtension:subdirectory:inBundleWithURL 10.6

+ URLsForResourcesWithExtension:subdirectory:inBundleWithURL 10.6

- pathForResource:ofType:inDirectory:forLocalization 10.0

- pathsForResourcesOfType:inDirectory:forLocalization 10.0

- URLForResource:withExtension:subdirectory:localization 10.6

定数
Mach-O Architecture
NSLoadedClasses

通知

NSBundleDidLoadNotification 10.0