Xcode 4.3.2を使用してiPadアプリケーションを作成する際に役立つサードパーティのソフトウェアを使用しています。ソフトウェアはオープンソースで、通常は設定されているので、開発者がアプリケーション用に書いたコードと一緒にコードがコンパイルされます。私は数多くの場所でソフトウェアを使用していたので、iOSシミュレータ用の静的ライブラリとして構築することにしました。静的なiOSライブラリのセレクタ呼び出し方法が認識されない
元のソースコードをコンパイルする代わりに、ライブラリをビルドして、あるアプリケーションをそのライブラリにリンクするように変換できました。しかし、シミュレータでアプリケーションを実行すると、セレクタがインスタンスに送信されるというエラーが表示されます。
私は、プログラムが静的ライブラリの一部を正常に使用していることを確認しました。しかし、オブジェクト上のメソッドを呼び出そうとするコードと、エラーが発生したコードがあります。呼び出されるメソッドは、実際にはそのオブジェクトのインタフェースでは定義されていません。むしろ、そのオブジェクトのクラスのカテゴリを定義する追加モジュールで提供されます。そのモジュールのヘッダーファイルが適切に含まれていて、コンパイラはカテゴリメソッドを見つけてオブジェクトに適用できるはずですが、実行時には上記のエラーが発生します。
私は 'nm'コマンドを使用して、カテゴリメソッドが静的ライブラリに存在することを確認しました。ここでは出力の例です:
nm libStaticLibrary.a | grep categoryMethod
00000130 t -[SomeClass(Category) categoryMethod:]
0000354c s -[SomeClass(Category) categoryMethod:].eh
の人々は、このライブラリが必要なアプリケーションで正常に動作させることができるかについて持っているかどうアイデア?
ここで説明したように-ObjCリンカフラグを追加します。http:// stackoverflowの.com/questions/2567498/objective-c-categories-in-static-library –
-load_allも動作します。 – CodaFi
可能な複製[静的ライブラリ内のリンクする目的-cカテゴリ](http://stackoverflow.com/questions/6820778/linking-objective-c-categories-in-a-static-library) –