小编典典

为什么 Xcode 6 中没有自动创建 ProjectName-Prefix.pch?

all

为什么不ProjectName-Prefix.pch自动创建Xcode 6

是否不再需要预编译头文件?

我应该在哪里写ProjectName-Prefix.pch之前的代码?


阅读 62

收藏
2022-05-13

共1个答案

小编典典

我怀疑是因为模块,它消除了对#import <Cocoa/Cocoa.h>.

至于将要放入前缀标头中的代码放在哪里,没有代码应该放入前缀标头中。将您的导入文件放入需要它们的文件中。将您的定义放入他们自己的文件中。把你的宏......无处。停止编写宏,除非没有其他方法(例如当您需要时__FILE__)。如果您确实需要宏,请将它们放在标题中并包含它。

前缀标头对于整个系统中几乎所有东西都使用的巨大的东西(如Foundation.h)是必需的。如果你有如此庞大而无处不在的东西,你应该重新考虑你的架构。前缀标头使代码重用变得困难,并且如果列出的任何文件都可以更改,则会引入细微的构建问题。避免使用它们,直到您遇到严重的构建时间问题,您可以证明使用前缀标头可以显着改善。

在这种情况下,您可以创建一个并将其传递给 clang,但它是一个好主意的情况非常罕见。


编辑:对于您在所有视图控制器中使用的 HUD
的具体问题,是的,您绝对应该将其导入到实际使用它的每个视图控制器中。这使得依赖关系清晰。当您在一个新项目中重用您的视图控制器时(如果您构建好控制器,这很常见),您将立即知道它需要什么。这对于类别
尤其 重要,如果它们是隐式的,这会使代码很难重用。

PCH 文件不是用来摆脱列表依赖的。您仍然应该像 Xcode 模板那样导入UIKit.h或根据需要导入。Foundation.hPCH
的原因是在处理非常大的标头(例如在 UIKit 中)时缩短构建时间。

2022-05-13