1

我创建了 3 个对象,并将它们链接在一起:

  • 问卷对象 - 其中包含一个
  • NextQuestion 对象 - 包含一个
  • 答案对象 - 具有文本属性。

在 ViewController 中,我希望能够调用:

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

但是,为此,我必须将所有三个文件都导入到我的 .m 文件中

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

是否有必要导入我在每个 .m 文件中使用的每个对象?或者有什么我可以做的,这意味着我只需要导入顶级项目并且它的所有子项目都会被自动引用?

注意。我知道我可以将所有三个添加到 Prefix.pch 文件中,但我想知道我是否错过了 Objective-C 的一些技巧,它允许我声明一个项目并且它的子对象会自动导入?

谢谢你!

4

3 回答 3

0

导入 .h 文件时,也可以使用 .h 文件中的任何导入。您可能需要清理和重建,但它们应该可用。因此,在您的情况下,您应该能够摆脱Questionaire.h唯一的导入。

此外,如果您的应用程序依赖于这些自定义类并且它们将在所有地方使用,那么将它们导入您的 .pch 文件可能是一个好主意,它们将为您的所有类进行预编译。

于 2012-09-05T14:02:06.073 回答
0

是否有必要导入我在每个 .m 文件中使用的每个对象?

并非在所有情况下,但是如果您向一个对象发送消息,您应该确保编译器看到它的声明——因为 ObjC 是一种非常动态的语言。

或者有什么我可以做的,这意味着我只需要导入顶级项目并且它的所有子项目都会被自动引用?

是的,您可以在任何标题中添加一个#import(当然,必须与翻译兼容)。然而,添加#imports 应该被最小化,因为#importing the world 会增加你的构建时间并引入一堆依赖。

于 2012-09-05T14:20:51.863 回答
0

在你的接口的公共头文件中,你应该尽可能多地前向声明,并且只声明#import真正需要的。这将有助于缩短构建时间。在你的实现文件中,你可以导入任何你需要的东西。

有时为了可用性,您可以将多个标题收集到一个“MyFramework.h”文件中,这样您就不必在每次使用类时添加 5 个导入。但是,您应该小心这一点,因为如果在许多地方导入标头,它会增加构建时间。

You may also want to think about adding common imports to your prefix header (.pch) which can be precompiled by Xcode to improve build times a little.

于 2012-09-05T14:29:58.127 回答