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

是否不再需要预编译头?

我应该把ProjectName-Prefix中的代码写在哪里。PCH之前?


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

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

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

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


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

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


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

Add new PCH file to the project: New file > Other > PCH file. At the Target's Build Settings option, set the value of Prefix Header to your PCH file name, with the project name as prefix (i.e. for project named TestProject and PCH file named MyPrefixHeaderFile, add the value TestProject/MyPrefixHeaderFile.pch to the plist). TIP: You can use things like $(SRCROOT) or $(PROJECT_DIR) to get to the path of where you put the .pch in the project. At the Target's Build Settings option, set the value of Precompile Prefix Header to YES.


您需要创建自己的PCH文件 添加新文件-> Other-> PCH文件

然后将这个PCH文件的路径添加到您的构建设置->前缀头->路径

($ SRCROOT) / filename . pch)


添加新的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)清洁和建造项目。 就是这样! !


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

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

我给你看一张照片!

添加一个新文件 进入“项目/构建设置/APPl LLVM 6.0-Language”


使用:

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