我创建了一个3个对象,并将它们链接在一起:
在ViewController中,我希望能够调用:
NSString *thisAnswerText = Questionnaire.nextQuestion.answer.text;
但是,为此,我必须将所有三个文件导入我的.m文件
#import "Questionnaire.h"
#import "Question.h"
#import "Answer.h"
是否有必要导入我在每个.m文件中使用的每个对象?或者有什么我可以做的,这意味着我只需要导入顶级项目,所有它的孩子都被自动引用?
NB。我知道我可以将所有这三个添加到Prefix.pch文件中,但是我想知道我是否遗漏了一些针对Objective-C的技巧,它允许我声明一个项目并且它的子对象会自动导入?
谢谢!
答案 0 :(得分:0)
导入.h文件时,.h文件中的任何导入也可用。您可能需要清理和重建,但它们应该可用。因此,在您的情况下,您应该能够仅导入Questionaire.h
。
此外,如果您的应用依赖于这些自定义类并且它们将在所有地方使用,那么将它们导入.pch文件中是个好主意,并且它们将针对您的所有类进行预编译。
答案 1 :(得分:0)
是否需要导入我在每个.m文件中使用的每个对象?
并非在所有情况下,但如果您发送消息对象,则应确保编译器看到其声明 - 只是因为ObjC是一种非常动态的语言。
或者有什么我可以做的,这意味着我只需要导入顶级项目,所有它的子项都会被自动引用?
是的,你可以在任何标题中添加#import
(当然,必须与翻译兼容)。但是,添加#import
应该被最小化,因为#import
世界会增加你的构建时间并引入一堆依赖。
答案 2 :(得分:0)
在接口的公共头文件中,您应该尽可能地前向声明,并且只需要#import
真正需要的内容。这将有助于缩短构建时间。在您的实现文件中,您可以导入所需的任何内容。
有时为了可用性,您可以将多个标题收集到一个“MyFramework.h”文件中,这样您每次使用类时都不必添加5个导入。但是,您应该小心这一点,因为如果在许多地方导入标题,它会增加构建时间。
您可能还想考虑在前缀头(.pch)中添加常用导入,可以通过Xcode对其进行预编译,以缩短构建时间。