1

3 つのオブジェクトを作成し、それらを連結しました。

  • アンケート オブジェクト - を含む
  • NextQuestion オブジェクト - を含む
  • Answer オブジェクト - text プロパティを持ちます。

ViewController で、次を呼び出せるようにしたい:

NSString *thisAnswerText = Questionnaire.nextQuestion.answer.text;

ただし、これを行うには、3 つのファイルすべてを .m ファイルにインポートする必要があります。

#import "Questionnaire.h"
#import "Question.h"
#import "Answer.h"

各 .m ファイルで使用する各オブジェクトをインポートする必要がありますか? または、トップレベルのアイテムをインポートするだけで、そのすべての子が自動的に参照されることを意味する何かできることがありますか?

注意。3 つすべてを Prefix.pch ファイルに追加できることはわかっていますが、1 つの項目を宣言してその子オブジェクトを自動的にインポートできるようにする Objective-C のトリックが欠けているのではないかと考えていました。

ありがとう!

4

3 に答える 3

0

各.mファイルで使用する各オブジェクトをインポートする必要がありますか?

すべての場合ではありませんが、オブジェクトにメッセージを送信する場合は、ObjCが非常に動的な言語であるという理由だけで、コンパイラがその宣言を認識できるようにする必要があります。

または、最上位のアイテムをインポートするだけで、そのすべての子が自動的に参照されることを意味する、私にできることはありますか?

はい、任意のヘッダーにを追加でき#importます(もちろん、翻訳と互換性がある必要があります)。ただし、#importsを追加することは最小限に抑える必要があります。これ#importは、ワールドを使用するとビルド時間が長くなり、多数の依存関係が発生するためです。

于 2012-09-05T14:20:51.863 に答える
0

#importインターフェイスのパブリック ヘッダー ファイルでは、本当に必要なものだけを可能な限り前方宣言する必要があります。これにより、ビルド時間を短縮できます。実装ファイルでは、必要なものを何でもインポートできます。

使いやすさのために、クラスを使用するたびに 5 つのインポートを追加する必要がないように、複数のヘッダーを 1 つの "MyFramework.h" ファイルにまとめることができます。ただし、ヘッダーが多くの場所にインポートされるとビルド時間が長くなる可能性があるため、これには注意する必要があります。

また、プレフィックス ヘッダー (.pch) に一般的なインポートを追加することを検討することもできます。これは、ビルド時間を少し改善するために Xcode でプリコンパイルできます。

于 2012-09-05T14:29:58.127 に答える
0

.h ファイルをインポートすると、.h ファイル内のインポートも使用できます。クリーニングと再構築が必要になる場合がありますが、それらは利用できるはずです。Questionaire.hしたがって、あなたの場合はいいえ、唯一のインポートで逃げることができるはずです。

また、アプリがこれらのカスタム クラスに依存しており、それらがあらゆる場所で使用される場合は、それらを .pch ファイルにインポートすることをお勧めします。これらはすべてのクラスに対してプリコンパイルされます。

于 2012-09-05T14:02:06.073 に答える