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