在一些教程中,说我们可以将一些头文件放在pch文件中。 之后,我仍然看到各个头文件中包含相同的标头? 为什么我们将标头放在 pch 文件中?
例如,UIKit.h
我相信这里有两个问题:
为什么要重复导入pch中的头文件和各个源文件?你是对的,这是多余的,你可以轻松地删除重复的导入之一,仍然运行你的程序,并且仍然能够使用 Xcode 的完成帮助。例如,您可以从 .pch 或视图控制器中删除 UIKit 导入。然而,UIKit 和 UIFoundation 是一个特例,因为它们几乎是 Cocoa Touch 的核心,这就是模板项目的加载方式。因此苹果决定复制它们。这可能是因为开发人员可能决定摆脱 .pch,因此 Apple 希望确保每个新的 UIViewController 都能立即工作,因为它会自动导入 UIKit。但对于您添加的所有其他框架/类,您只需将其放在一个位置(.pch 文件或导入它的单个源文件)。这就引出了第二个问题:
何时使用 .pch(与源文件中的常规导入相比)?预编译标头,特别是在构建(编译)应用程序期间,非常有用,因为 .pch 文件中的标头仅在第一次编译,并且仅在标头将来发生更改时才编译。如果您的应用程序导入了许多不会更改的框架/标头;这可以加速构建(编译),因为编译器将使用 .pch,而不是每次编译时都编译每个导入的框架/类。
PS:无论您是在.pch文件中还是在单个类中导入框架/类;您仍然需要链接项目中的相关框架/库,因为这是代码与公共标头的位置,它只是帮助您编写使用该类/框架的公共属性/变量和方法的代码。 UIKit 和基础框架默认链接。
PS2:正如 .pch 文件所述,.pch 中列出的任何标头都将导入到所有源文件中。您可能认为这是多余的,但使用 #import 消除了任何多余的导入。
希望这有帮助