为什么ProjectName-Prefix ?在Xcode 6中自动创建pch ?

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

是否不再需要预编译头?

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

111892 次浏览

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

至于在前缀标头中放置代码的位置,没有应该放在前缀标头中的代码。将您的导入放到需要它们的文件中。将定义放入它们自己的文件中。把宏放到任何地方。停止编写宏,除非没有其他方法(比如当你需要__FILE__时)。如果你确实需要宏,把它们放在一个标题中并包含它。

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

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


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

PCH文件不是用来消除清单依赖关系的。你仍然应该根据需要导入UIKit.hFoundation.h,就像Xcode模板那样。使用PCH的原因是为了在处理大量的头文件(如UIKit)时提高构建时间。

没有问题,如果它是正确的或不,你可以手动添加PCH文件:

  1. 将新的PCH文件添加到项目:新文件>其他的在;PCH文件

  2. 在目标的建立设置选项中,将前缀头的值设置为您的PCH文件名,以项目名称为前缀(例如,对于名为TestProject的项目和名为MyPrefixHeaderFile的PCH文件,将值TestProject/MyPrefixHeaderFile.pch添加到plist)。

    你可以使用像$(SRCROOT)$(PROJECT_DIR)这样的东西来获得你在项目中放置.pch的路径。

  3. 在目标的建立设置选项中,将预编译前缀头的值设置为YES

需要创建自己的PCH文件
添加New file -> Other-> PCH file < / p >

然后将这个PCH文件的路径添加到构建setting->prefix header->path

((SRCROOT) / filename.pch美元)

enter image description here

添加新的PCH文件遵循以下步骤:

(1)添加新文件—选择iOS—其他和PCH文件

(2)将此PCH文件的路径添加到您的Project - BuildSetting - Apple LLVM 6.0 Language

增加“设置前缀头路径YourApplicationName(根路径)/filename.pch”

添加。pch文件-

1)添加新的。PCH文件到你的项目->新文件->其他->PCH文件

2)进入项目的构建设置。

3)搜索“prefix header”。你可以在Apple LLVM下找到它。

4)粘贴在字段$(SRCROOT)/yourPrefixHeaderFileName.pch

5)清理并构建项目。 就是这样! !< / p >

enter image description here

如果你决定手动添加一个。pch文件,并且你想使用Objective-C,就像在xCode 6之前一样,你还必须在.pch文件中导入UIKit和Foundation框架。否则,您将不得不在每个头文件中手动导入这些框架。无论如何,您都可以添加以下代码,因为它会测试所使用的语言:

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

我给你看一张照片!

  1. 添加一个新文件 Add a new File

  2. 进入项目/构建设置/APPl LLVM 6.0-Language Add a new File

使用:

$ (PROJECT_DIR) /项目名称/ PrefixHeader.pch