为什么ProjectName-Prefix不是。在Xcode 6中自动创建pch ?
是否不再需要预编译头?
我应该把ProjectName-Prefix中的代码写在哪里。PCH之前?
为什么ProjectName-Prefix不是。在Xcode 6中自动创建pch ?
是否不再需要预编译头?
我应该把ProjectName-Prefix中的代码写在哪里。PCH之前?
当前回答
使用:
$ (PROJECT_DIR) /项目名称/ PrefixHeader.pch
其他回答
如果你决定手动添加一个。pch文件,并且你想使用Objective-C,就像在xCode 6之前一样,你还必须在.pch文件中导入UIKit和Foundation框架。否则,您将不得不在每个头文件中手动导入这些框架。无论如何,您都可以添加以下代码,因为它会测试所使用的语言:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
使用:
$ (PROJECT_DIR) /项目名称/ PrefixHeader.pch
添加新的PCH文件遵循以下步骤:
(1)添加新文件—选择iOS—其他和PCH文件
(2)将此PCH文件的路径添加到您的Project - BuildSetting - Apple LLVM 6.0 Language
增加“设置前缀头路径YourApplicationName(根路径)/filename.pch”
我给你看一张照片!
添加一个新文件 进入“项目/构建设置/APPl LLVM 6.0-Language”
我怀疑是因为模块,它消除了对#import <Cocoa/Cocoa.h>的需求。
至于在前缀标头中放置代码的位置,没有应该放在前缀标头中的代码。将您的导入放到需要它们的文件中。将定义放入它们自己的文件中。把宏放到任何地方。停止编写宏,除非没有其他方法(比如当你需要__FILE__时)。如果你确实需要宏,把它们放在一个标题中并包含它。
对于整个系统中几乎所有内容都使用的大型文件(如Foundation.h),前缀头是必要的。如果你有这么大且无处不在的东西,你应该重新考虑你的架构。前缀头使代码重用变得困难,如果列出的任何文件都可能更改,则会引入微妙的构建问题。避免使用它们,直到遇到严重的构建时间问题,并且可以证明使用前缀头可以显著改善。
在这种情况下,您可以创建一个并将其传递给clang,但这是一个非常罕见的好主意。
编辑:关于你在所有视图控制器中使用的HUD的具体问题,是的,你绝对应该将它导入实际使用它的每个视图控制器中。这使得依赖关系变得清晰。当你在一个新项目中重用你的视图控制器时(如果你构建了你的控制器,这是很常见的),你会立即知道它需要什么。这对于类别来说尤其重要,如果它们是隐式的,则会使代码很难重用。
PCH文件不是用来消除清单依赖关系的。你仍然应该根据需要导入UIKit.h或Foundation.h,就像Xcode模板那样。使用PCH的原因是为了在处理大量的头文件(如UIKit)时提高构建时间。