8

いくつかの便利なヘルパー、ユーティリティ、ツールなどを再グループ化する独自のフレームワークの作成を開始したところです。すべて正常に動作します。メイン ヘッダー フレームワーク ファイルにカテゴリを直接インポートできるかどうか疑問に思いました。

たとえば、私のフレームワークは myFramework という名前です。クラス名 myFramework.h をパブリック ヘッダーに配置し、すべてのインポートを作成しました。

#import "MyCategory+Helper.h"
#import "MyOtherCategory+Helper.h"
#import "AClass.h"
...

次に、フレームワークを構築し、チームの開発者に配布します。

私が期待しているのは、他の開発者が私のフレームワークのすべてのカテゴリにアクセスするためにインポートするだけでよいということです。カテゴリを使用する代わりにサブクラス化しても問題ありませんが、期待どおりではありません。

しばらくの間、LoadableCategory.hを使用して、フレームワークでカテゴリを機能させ、「その他のリンカー フラグ」設定で -ObjC フラグを使用し、次のように各カテゴリをインポートする必要があることを開発者に指定します。

#import <myFramework/MyCategory+Helper.h>
#import <myFramework/MyOtherCategory+Helper.h>
...

それは不可能かもしれませんが、なぜだろうか?私は何かが恋しい:)

ありがとうございました !ペビー

PS : 私の英語で申し訳ありません...

4

2 に答える 2

4

フレームワークをリンクするときにカテゴリが含まれていることを確認する場合は、ビルド設定の [その他のリンカー フラグ-all_load] セクションでパラメーターを指定する必要があります。

于 2013-06-21T14:34:47.433 に答える
4

キャプテンレッドマフが言ったように、

私は間違いを犯しました。いくつか試してみたところ、-all_loadリンカーフラグを使用すると、カテゴリのインポートでも機能することがわかりました。私の間違いは、メインのヘッダー ファイルにありました。不適切なインポート、一部の欠落など-all_loadです。フラグを設定した後、最終的にプロジェクトをリロードしません。

今私は入っていmyFramework.hます:

#import "MyCategory+Helper.h"
#import "MyOtherCategory+Helper.h"
#import "AClass.h"
...

フレームワークを使用する私のプロジェクトでは:

1/ 「その他のリンカーフラグ」をセットアップします-all_load(必要に応じてXCodeをリロードします)

2 /#import <myFramework/myFramework.h>例えばmyProjectApp-Prefix.pch

その後、プロジェクト内の他のすべてのものをインポートする必要はありません。フレームワークを追加した後、最初に XCode を再起動する必要があるにもかかわらず、すべて問題ないようです。

CaptainRedmuff に感謝します。私はすでにあなたのソリューションをテストしていましたが、無駄でした。さらにテストした後、OKです!

*編集私のカテゴリの1つを使用するクラスの1つに行くまで、すべてが正常に機能します。XCodeは、カテゴリが存在しないなどのエラーが発生したことを示しています。コードをきれいにするときの同じ問題:((

目に見えるインターフェイスがありません...セレクターを宣言します...

**EDIT にインポート<myFrameWork/myFramework>してmyProjectApp-Prefix.pchも、 内にインポートしない場合#ifdef __OBJC__ conditionalは問題ありません。

于 2013-06-21T15:29:35.653 に答える