3

在一些教程中,据说我们可以将一些头文件放在pch文件中。之后,我仍然看到单个头文件中包含相同的头文件?为什么我们将标题放在pch文件中?

例如,UIKit.h

4

1 回答 1

2

我相信这里有两个问题:

  1. 为什么要在 pch 和单个源文件中重复导入头文件?你是对的,这是多余的,你可以轻松摆脱重复导入之一,仍然运行你的程序,仍然能够使用 Xcode 的完成帮助。例如,您可以从 .pch 或 View Controller 中删除 UIKit 导入。然而,UIKit 和 UIFoundation 是一个特例,因为它们几乎是 Cocoa Touch 的核心,而这正是模板项目的加载方式。所以苹果决定复制它们。这可能是因为开发人员可能决定摆脱 .pch,因此 Apple 希望确保每个新的 UIViewController 都能立即工作,因为它会自动导入 UIKit。但是对于您添加的所有其他框架/类,您只需将其放在一个位置(. pch 文件或正在导入它的单个源文件)。这就引出了第二个问题:

  2. 何时使用 .pch(相对于源文件中的常规导入)?预编译的头文件,尤其是在构建(编译)您的应用程序期间,可能非常有用,因为 .pch 文件中的头文件仅在第一次编译时才会编译,并且仅在头文件将来更改时才会编译。如果您的应用程序导入了许多不会更改的框架/标头;这可以加速构建(编译),因为编译器将使用 .pch 而不是每次编译时编译每个导入的框架/类。

PS:无论您是在 .pch 文件中还是在单个类中导入框架/类;您仍然需要在项目中链接相关的框架/库,因为这是代码与公共标头的对比,公共标头仅帮助您编写使用该类/框架的公共属性/变量和方法的代码。UIKit 和基础框架默认链接。

PS2:正如 .pch 文件所述,.pch 中列出的任何头文件都将被导入所有源文件。您可能认为这是多余的,但 #import 的使用消除了任何多余的导入。

希望这可以帮助

于 2013-07-13T04:10:06.283 回答