私は現在cocoapodライブラリを作成中です。 json、pngなどのxibファイルをロードする場合は、メインバンドルを使用する代わりに[NSBundle bundleForClass:[self class]]]
を使用する必要があります。私は知りたかったのですが、このようにするにはこの推奨方法があり、その意味は何ですか?[NSBundle bundleForClass:[self class]]]それはどういう意味ですか?
答えて
Appleは、バンドルを使用して、アプリケーション、フレームワーク、プラグイン、その他多くの特定の種類のコンテンツを表現します。バンドルは、含まれているリソースを明確に定義されたサブディレクトリに編成し、バンドル構造はプラットフォームとバンドルのタイプによって異なります。
-[NSBundle bundleForClass:]
は、指定されたクラスのバンドルを提供します。例えば
:
AwesomeApp:
AppController
FrameworkA:
FrameController
AwesomeApp.appバンドルを返すのAppController -[NSBundle bundleForClass:[self class]]
に呼び出します。そしてFrameController
内ではFrameworkA.framework
返します -
バンドルを カプセル化コードとリソースに使用されているのMacOSとiOSの基本的な技術です。バンドルは、必要なリソースの既知の場所を提供することによって開発者 の経験を簡素化し、複合バイナリファイルを作成する必要性を軽減する を簡略化します。代わりに、バンドル は、より自然なタイプの 組織を提供するためにディレクトリとファイルを使用します。 の開発中と配備後の両方で簡単に変更することもできます。
xCodeプロジェクトには、複数のターゲットが含まれることがあります。複数のターゲットには、異なるファイル(アセットファイルやソース/設定など)が含まれている場合があります。
この方法では、すべてのファイルをすべてのターゲットにパックする必要はありませんが、区別することができます。 特定のテストファイル/リソース/ "無効な"ファイルを提供してコードをテストすることができるので、特にこれをテストするのは素晴らしいアプローチです。 mainBundle(基本的には提供されるアプリケーション)にあるタイムコードのほとんどをテストしますが、アプリケーション内でパケットではないアセットやその他のものも使用するためです。
この機能を利用したい場合は、別のバンドルから特定のファイルをロードすることをお勧めします。
だから、あなたは文句を言わない
[[NSBundle mainBundle] pathForResource:@"tests" ofType:@"plist"]
使用することができる。しかし、あなたのテストバンドルにごIN XCTTestCaseクラスを使用します:あなたが本当に知りたい場合は
// https://developer.apple.com/reference/foundation/bundle
[[NSBundle bundleForClass:self.class] pathForResource:@"tests" ofType:@"plist"]
バンドルの詳細については、次のリンクをご覧ください。 https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/Introduction/Introduction.html#//apple_ref/doc/uid/10000123i
非常に強力で便利なので、時間を取ってください:-)
- 1. それはどういう意味ですか?<td class = "bodytext2">
- 2. それはどういう意味ですか - SSLでのログイン
- 3. AndroidでJsoup userAgent - それはどういう意味ですか?
- 4. xcode printf 0x0000000000000000、それはどういう意味ですか?それはヌルを意味しますか?
- 5. XoffLimit、XonLimit - それはどういう意味ですか?
- 6. MVC4 - ContextDependentView - それはどういう意味ですか?
- 7. SQL Serverリターンコード-6、それはどういう意味ですか?
- 8. java.lang.IllegalStateExceptionそれはどういう意味ですか?
- 9. boost.randomバグ警告 - それはどういう意味ですか?
- 10. Appription Active Directoryサポート、それはどういう意味ですか?
- 11. AudioRecord: "Overrun user"ログ - それはどういう意味ですか?
- 12. セッションnull、それはどういう意味ですか?
- 13. PHP、$ this - > {$ var} - それはどういう意味ですか?
- 14. アセンブリNASMセグメンテーションフォールト、それはどういう意味ですか?
- 15. Apache Camel: "direct:start"エンドポイント - それはどういう意味ですか?
- 16. javax.wsdl.WSDLException:WSDLException:faultCode = PARSER_ERRORそれはどういう意味ですか?
- 17. errno!= EINTR:それはどういう意味ですか?
- 18. "<!DOCTYPE html>"それはどういう意味ですか?
- 19. IllegalStateException:それはどういう意味ですか?
- 20. JavaCv/OpenCvエラー:それはどういう意味ですか?
- 21. これはどういう意味ですか? * [class = "hide"]をCSSで
- 22. "javascript://"とはどういう意味ですか?そのコードには意味:
- 23. linuxの意味はどういう意味ですか?
- 24. %%はどういう意味ですか?
- 25. マイナスがjavascriptで等しい - それはどういう意味ですか?
- 26. WsKSendToはSTATUS_INVALID_DEVICE_STATEを返します:それはどういう意味ですか?
- 27. 0x0Fは何を意味していますか?そして、このコードはどういう意味ですか?
- 28. Pythonの文字列の違い - それはどういう意味ですか?
- 29. イベントビューアからのメッセージ、それはどういう意味ですか?
- 30. キー制約が失敗する - それはどういう意味ですか?
コードが現在の実行可能ファイル(Test、Framework)にない場合は、このコードを使用してください。 – shallowThought