2009-07-22 37 views
2

私は別のインフラストラクチャクラスのlibプロジェクトを継承したNSData(base64拡張)の拡張を追加しました。しかし、私のメインプロジェクトからこのメソッドを使用すると、次のようなエラーが表示されます。 " - [NSConcreteData encodeBase64]:インスタンス0x121e60に送られたセレクタが認識されません。NSConcreteDataとNSData

私のメインプロジェクト自体に同じクラスを残しておけば、これは問題なく実行されます。

このメソッドを次のように呼び出します。 [dev setToken:[token encodeBase64]];

別のプロジェクトに拡張機能を追加すると、これが機能しない理由をお勧めします。 (私は既にNSDateのようないくつかの拡張を既に使用していますが、これは問題ありません)

答えて

0

カテゴリを構成するために必要なメタデータは通常、リンカによって取り除かれているためです。 "-ObjC" LDFLAGをプロジェクトに追加すると、たとえそれが死んでいるように見えても、すべての潜在的なObjC情報をリンクするようリンカーに指示します。

+0

「その他のリンクされたフラグ」に-ObjCが既に追加されています – Sreehari

+0

アプリまたはライブラリのフラグでは? –

+0

私はappとlibの両方に追加しました。 – Sreehari

3

これはiPhone OS 3.0でですか? 3.0 SDK broke the use of -ObjCですが、通常、ターゲットアプリケーション内の他のリンカフラグに-all_loadオプションを追加することで、静的ライブラリのカテゴリにリンクすることができます。