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

时间:2014-06-11 08:57:19

标签: ios xcode xcode6

为什么ProjectName-Prefix.pch

中自动创建了Xcode 6?{/ 1}

不再需要预编译头吗?

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

8 个答案:

答案 0 :(得分:425)

如果没有问题,可以手动添加PCH文件:

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

  2. 在Target的 Build Settings 选项中,将 Prefix Header 的值设置为您的PCH文件名,项目名称为prefix(即对于名为TestProject的项目和名为MyPrefixHeaderFile的PCH文件,将值TestProject/MyPrefixHeaderFile.pch添加到plist中。

    提示:您可以使用$(SRCROOT)$(PROJECT_DIR)之类的内容来了解​​将.pch放入项目的路径。

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

    < / LI>

答案 1 :(得分:135)

我怀疑因为模块而不需要#import <Cocoa/Cocoa.h>

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

前缀标题对于整个系统中几乎所有内容(如Foundation.h)都非常重要。如果你有一些巨大而无处不在的东西,你应该重新思考你的架构。前缀标题使代码重用变得困难,并且如果列出的任何文件可能发生更改,则会引入细微的构建问题。避免使用它们,直到您遇到严重的构建时问题,并且可以使用前缀标题显着改进。

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


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

PCH文件不是为了摆脱列表依赖性。您仍应按照Xcode模板的要求导入UIKit.hFoundation.h。 PCH的原因是在处理非常大的标题时(例如在UIKit中),可以缩短构建时间。

答案 2 :(得分:126)

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

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

  

($(SRCROOT)/filename.pch)

enter image description here

答案 3 :(得分:51)

我会给你看一张照片!

  1. 添加新文件 Add a new File

  2. 转到项目/构建设置/ APPl LLVM 6.0语言 Add a new File

答案 4 :(得分:23)

添加.pch文件 -

1)将新的.pch文件添加到您的项目中 - &gt;新文件 - &gt;其他 - &gt; PCH文件

2)转到项目的构建设置。

3)搜索&#34;前缀标题&#34;。您可以在Apple LLVM下找到它。

4)将其粘贴到字段$(SRCROOT)/yourPrefixHeaderFileName.pch

5)清理并构建项目。 那就是!!!

enter image description here

答案 5 :(得分:12)

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

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

答案 6 :(得分:7)

要添加新的PCH文件,请按照以下步骤操作:

(1)添加新功能 - 选择iOS - 其他和PCH文件

(2)将此PCH文件的路径添加到项目中 - BuildSetting - Apple LLVM 6.0语言

添加设置前缀标题路​​径YourApplicationName(root-path)/filename.pch

答案 7 :(得分:7)

使用:

  

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