为什么ProjectName-Prefix.pch
Xcode 6
?{/ 1}
不再需要预编译头吗?
我应该在哪里编写ProjectName-Prefix.pch
之前的代码?
答案 0 :(得分:425)
如果没有问题,可以手动添加PCH文件:
将新的PCH文件添加到项目中:新文件>其他> PCH文件。
在Target的 Build Settings 选项中,将 Prefix Header 的值设置为您的PCH文件名,项目名称为prefix(即对于名为TestProject
的项目和名为MyPrefixHeaderFile
的PCH文件,将值TestProject/MyPrefixHeaderFile.pch
添加到plist中。
提示:您可以使用$(SRCROOT)
或$(PROJECT_DIR)
之类的内容来了解将.pch
放入项目的路径。
在目标构建设置选项中,将预编译前缀标题的值设置为YES
。
答案 1 :(得分:135)
我怀疑因为模块而不需要#import <Cocoa/Cocoa.h>
。
关于将放置在前缀标头中的代码放在何处,没有代码应放在前缀标头中。将导入放入需要它们的文件中。将您的定义放入自己的文件中。放你的宏......无处可去。除非没有其他方法(例如当您需要__FILE__
时),否则请停止编写宏。如果确实需要宏,请将它们放在标题中并包含它。
前缀标题对于整个系统中几乎所有内容(如Foundation.h
)都非常重要。如果你有一些巨大而无处不在的东西,你应该重新思考你的架构。前缀标题使代码重用变得困难,并且如果列出的任何文件可能发生更改,则会引入细微的构建问题。避免使用它们,直到您遇到严重的构建时问题,并且可以使用前缀标题显着改进。
在这种情况下,你可以创建一个并将其传递给clang,但这是一个好主意,这是非常罕见的。
编辑:关于您在所有视图控制器中使用的HUD的具体问题,是的,您应该将其绝对导入到实际使用它的每个视图控制器中。这使得依赖关系变得清晰。当您在新项目中重复使用视图控制器时(如果您很好地构建控制器,这很常见),您将立即知道它需要什么。对于类别来说,尤其很重要,如果它们是隐含的,可能会使代码很难重用。
PCH文件不是为了摆脱列表依赖性。您仍应按照Xcode模板的要求导入UIKit.h
或Foundation.h
。 PCH的原因是在处理非常大的标题时(例如在UIKit中),可以缩短构建时间。
答案 2 :(得分:126)
您需要创建自己的PCH文件
添加New file -> Other-> PCH file
然后将此PCH文件的路径添加到您的构建setting->prefix header->path
($(SRCROOT)/filename.pch)
答案 3 :(得分:51)
我会给你看一张照片!
添加新文件
转到项目/构建设置/ APPl LLVM 6.0语言
答案 4 :(得分:23)
添加.pch文件 -
1)将新的.pch文件添加到您的项目中 - &gt;新文件 - &gt;其他 - &gt; PCH文件
2)转到项目的构建设置。
3)搜索&#34;前缀标题&#34;。您可以在Apple LLVM下找到它。
4)将其粘贴到字段$(SRCROOT)/yourPrefixHeaderFileName.pch
5)清理并构建项目。 那就是!!!
答案 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