いくつかの異なるプロジェクトで使用する多くのクラスを含むカスタム フレームワークを作成しています。このライブラリを他の開発者に配布するので、コードを保護する必要があります
非常に役立つと思われるこのチュートリアルに出会いました
http://codefriend.blogspot.co.uk/2011/09/creating-ios-framework-with-xcode4.html
これを使用して、アプリをフレームワークに変換することができました。すべてのクラスがコピーされ、すべてのユーザーが .h ファイルを見るようにコードが保護されます。したがって、これを将来のアプリに追加できますが、リソース、つまり画像や XIB ファイルにアクセスする方法がわかりません。
画像の回避策の 1 つは、.png ファイルを .png.h ファイルに変換することです。プロセスは次のとおりです。
1) Open a terminal and "cd" to the directory that holds myImage.png
2) Run the command "xxd -i myImage.png myImage.png.h" -- This will turn the image into a .h header file
3) Include the new myImage.png.h file in the framework before building and make it a public header
4) After adding the framework to the project using it, import myImage.png.h
5) Load the data into a NSData object with [NSData dataWithBytes:myImage_png length:myImage_png_len];
これは、面倒な方法であっても、画像には問題なく機能します。ただし、これは XIB ファイルでは機能しないようです。テストとして、私のフレームワーク プロジェクトで、TestController という名前の新しい UIViewController を作成してから、フレームワークを作成し、それを新しいプロジェクトに追加してから、このようにアクセスしてみます
NSData *data = [NSData dataWithBytes:TestControllerVC_xib length:TestControllerVC_xib_len];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
TestControllerVC *test = [[TestControllerVC alloc]initWithNibName:str bundle:nil];
[self.navigationController pushViewController:test animated:YES];
このエラーでアプリがクラッシュします
> *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in
> bundle: 'NSBundle </Users/adam/Library/Application Support/iPhone
> Simulator/6.1/Applications/E9AEE10A-27A0-4363-B81D-D1DBE5DC7A51/TestAppWithFrameworkLib.app>
> (loaded)' with name <?xml version="1.0" encoding="UTF-8"?>.... (rest of xml printed)'
(TestController クラスの XML を出力します。xml ファイル全体で投稿を詰まらせたくありませんでした)
私の質問は、リソースにアクセスするより良い方法はありますか? ディレクトリの TestBundle.Framework フォルダーにアクセスすると、リソース ファイルが表示されますが、フレームワークをアプリに追加すると、表示されるのはヘッダー フォルダーだけです (下の画像を参照)。
フレームワークをアプリに追加するときにリソース フォルダーが表示されない理由はありますか? 下の画像でわかるように、xibファイルがリソースに確実に追加されているため、リソースにアクセスできる方法はありますか。どんな助けでも大歓迎です!!!