在Objective C中包含多个头的正确方法

时间:2017-12-21 04:50:57

标签: ios objective-c header-files

到目前为止,我一直在需要的.h类文件中导入所需的.h文件。 我昨天读到这是不正确的方法,我应该转发.h中的类,然后在.m中导入它但是,我很困惑这是什么时候这样做的正确方法它来到大型项目?

由于我会在很多文件中进行大量导入,因此这会使代码在我看来很长。有人建议我创建一个BaseViewController类,其子类UIViewController并在那里添加我的所有导入,我将创建的所有UIViewController's将子类BaseViewController而不是{{1}直接。这是有效的,但我只是想知道正确的方法。

提前致谢。

4 个答案:

答案 0 :(得分:1)

Xcode中,当您创建class时,默认情况下会生成该类的.h.m个文件。

这两个文件用于分隔班级的publicprivate部分。

.h文件是类的公共声明的头文件,如API,而.m文件是私有实现。

您必须在somefile.h

中导入somefile.m

答案 1 :(得分:1)

  1. 在项目中导入头文件的最简单方法是创建.pch文件。 创建.pch并在.pch文件中添加要最频繁导入的类标题。然后无需导入任何.h.m。他们会自动为他们提供。
  2. 请参考how to create .pch file

答案 2 :(得分:0)

你可以这样做。为每一个模块创建一个.H文件,把需要用到的类导入到里面,需要引用时直接引入这个模块的.H文件使用就好。这样不用写过多的。 ħ文件,也避免了PCH的导入文件过多的情况。

你可以这样做。为每个模块创建一个.h fiel,并将你想要的.h文件导入到这个.h。并将此.h文件导入到您想要的位置。但是如果某个.h文件是基础的,请将它们导入.pch文件。

事实上,我发现它有点过于猖獗。但是,希望对你有用。

答案 3 :(得分:0)

Objective-C的标准最佳做法是在WebDriver driver; //constructor public UserRegistrationPage(WebDriver driver) { this.driver=driver; } 头文件中转发声明类,并在.h实现文件中转发#import个类。这减少了编译时间并迫使您将依赖项移动到实际需要的位置。例外是您的类继承的基类和协议。这些标题中需要.m

Google Style Guide for Objective-C指定了标头应包含在#import实施文件中的建议顺序。这部分是为了阻止标头依赖于它们之前包含的其他标头。订单如下:

  1. 相关标题(例如.m
  2. 操作系统标头(例如MyClass.h
  3. 语言库标题(例如Foundation/Foundation.h
  4. 其他依赖项的标头组
  5. 通常,许多stdlib.h和/或前向声明会使代码过长,这可能表明您应该重构以减少类之间的依赖关系。理想情况下,依赖项的数量should be low,但最终取决于具体情况。