5

スクリーンショット

自分が作ったクラスにカテゴリを設定するのにかなり苦労しています。私が読んだことから、Objective-Cを使用すると、クローズドソースのクラスだけでなく、任意のクラスにカテゴリを作成できます。(正直なところ、他の方法では意味がありません。)

もちろん、実際のクラスファイルにカテゴリメッセージを追加することはできますが、それらを別々に保ちたいと思います(カテゴリは、非常に一般的に使用できるクラスのまれな特殊な使用法であるため)。クラスを共有したいのですが、カテゴリは非公開にしてください...とにかく。

目前の問題を表示するために、カテゴリを削除しました。私は(現在)最初のカテゴリメッセージで4つのエラーを受け取ります。その行で私が受け取るエラーの数は、それが参照されている回数に正比例しますが、それは均等な増加ではありません。誰かがこれを引き起こしている可能性があることを知っていますか?

4

1 に答える 1

6

ByteCollection.h によってインポートされる Resources.h ファイルは、ByteCollection+words.h をインポートします。そのため、ByteCollection+words.h が ByteCollection.h をインポートすると、循環依存が発生します†。循環依存を解消する最も簡単な方法は、インポートの 1 つをヘッダーではなく実装ファイルに移動することです。これは Resources.h で可能なようです。

† 循環依存関係があると、なぜ問題になるのでしょうか? #import ディレクティブは文字通り、コピーして貼り付けた場合と同様に、指定したファイルをテキストでインクルードします。また、重複したコードが作成されるため、ファイルを 2 回インクルードしません。しかし、これは、ファイル A が「ファイル B を先に進めたい」と言い、ファイル B が「ファイル A を先に進めたい」と言うと、そのうちの 1 つが失望し、次のようなエラーにつながることを意味します。あなたはここに来ています。

于 2012-06-13T21:21:58.837 に答える