6

クラスとそのクラスで使用されるいくつかのリソースを含むバンドルがある場合。バンドルからクラスをロードする場合、そのクラスのリソース(クラスをロードしたバンドル内にある)をどのようにロードする必要がありますか?

バンドルからロードされたクラスからインスタンス化されたオブジェクト内に画像をロードしたいとします。私が行った場合

NSImage *image = [NSImage imageNamed:@"myImage"];

クラスをロードした場所からバンドル内の画像をロードしますか?または、クラスとリソースをバンドルにロードしたアプリケーションのバンドルを調べますか?

4

3 に答える 3

15

OS X 10.7+ では、次のようにします。

NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @"com.company.otherapp"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @"imageName"];
于 2012-09-03T14:21:57.023 に答える
4

このメソッドは、いくつかの場所で名前付きの画像を検索し、指定された名前に一致する最初の画像を返します。検索の順序は次のとおりです。

  1. setName: メソッドを使用して名前が明示的に設定され、現在イメージ キャッシュに存在するオブジェクトを検索します。
  2. 指定された文字列と名前が一致するファイルをアプリケーションのメイン バンドルで検索します。(バンドルの検索方法については、『バンドル プログラミング ガイド』の「バンドルのコンテンツへのアクセス」を参照してください。)
  3. Application Kit フレームワークで、指定された名前の共有イメージを検索します。アプリケーション バンドル内のファイルを検索する場合は、name パラメーターにファイル名拡張子を含めることをお勧めします (必須ではありません)。(リンク)
于 2011-06-25T02:22:26.423 に答える
0

+bundleForClass:のclassメソッドを使用しNSBundleて、特定のクラスのバンドルへの参照を取得できます。

次に、の‑pathForImageResource:メソッドを使用NSBundleして画像へのパスを取得し、そのパスを使用してを作成できNSImageます。

于 2011-06-25T23:49:54.573 に答える