在Objective-C中,我是否需要导入每个h文件才能看到我的对象层次结构?

时间:2012-09-05 13:58:58

标签: objective-c ios import

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

  • 问卷调查对象 - 包含
  • NextQuestion对象 - 包含
  • 答案对象 - 具有文字属性。

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

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

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  

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

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

  

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

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

答案 2 :(得分:0)

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

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

您可能还想考虑在前缀头(.pch)中添加常用导入,可以通过Xcode对其进行预编译,以缩短构建时间。