PCH的文件的用途:
     在实际的项目开发中,如果很多地方都在使用某个类的头文件,很多地方都在使用同一个”宏”的时候;很多地方用到了NSLog()函数, 在app发布的时候,想清除掉时,此时就需要一个pch文件了;
PCH文件的好处:
     其他代码文件无需显示导入该PCH文件,默认就都可以访问(其他文件无需手动#import该pch文件就能使用);
PCH文件的坏处:编译时比较耗时(这是显然的);
PCH的创建:
xcode6.1中,默认没有创建pch文件。
Command +
N 新建 PCh File;
程序开发阶段分为:
   1.调试阶段,写代码、调错误,需要使用NSLog()。同时在调试阶段系统会自定义一个叫做DEBUG的宏。
   2.发布阶段,写好的代码生成ipa等压缩文件,上传到AppStore,安装到用户设备上,不需要NSLog()。同时系同会自动删除叫做DEBUG的宏。
   3.综上所述, 可以自定义一个NSLog():
         #ifdef DEBUG
         #define YSCLog(...) NSLog(__VA_ARGS__)
         #else
         #define YSCLog(...)
         #endif
    4.所有与OC相关的宏定义都要写在:
         #ifdef __OBJC__
         #endif
  里面,因为写在这个if中的所有内容只有OC代码才可以使用,当在项目中新建了一个.c文件是不可以使用的(不使用就不会报错),否则如果写在了外面,新建一个.c的程序也能使用,就报错了。比如C语言中没有#import,只有#include
<xx.h>

代码:
#ifndef PrefixHeader_pch
#define PrefixHeader_pch #ifdef __OBJC__
// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
#ifdef DEBUG
#define YSCLOG(...) NSLog(__VA_ARGS__)
#else
#define YSCLOG(...)
#endif #endif #endif /* PrefixHeader_pch */
PCH文件的导入:
导入方式一:
*选中项目-> Build Setting -> All ->搜索"head"->修改Prefix
Header的内容为:
   **"$(SRCROOT)/$(PRODUCT_NAME)/PrefixHeader.pch"(如果有问题,换下面的方式,可能会与中文有关)
   **或者 "$(SRCROOT)/对应的文件夹名/PrefixHeader.pch"
如图所示:

导入方式二:
     方式一中填写一个相对路径$(SRCROOT)/$(PRODUCT_NAME),这哪记得住?也懒得记!
   怎么办:
     1.先随便写一个路径,编译;
     2.将pch文件拖到终端,终端会直接输出该pch的路径;
     3.根据编译提示错误,缺什么路径,补全即可!
  
eg:
1.随便写一个路径“1”,编译错误提示:
2.补全路径即可:

最新文章

  1. XE6 &amp; IOS开发之开发者账号、苹果证书(2):关于苹果证书
  2. Oracle数据文件在open状态被删除的恢复记录
  3. 微软Hololens学院教程-Hologram 210 Gaze(凝视)【微软教程已经更新,本文是老版本】
  4. FileDescriptor
  5. hibernate学习(一)
  6. 如何在网页标题栏title加入logo图标?
  7. git基本命令--远程
  8. &lt;link rel=&quot;stylesheet&quot; href=&quot;3.css&quot;/&gt; 链接方式
  9. golang基础- ElasticSearch搜索引擎、kibana可视化工具、向ES输出数据
  10. BZOJ3105-新Nim游戏
  11. Redis高可用 Sentinel
  12. java post json sample
  13. udev example -- detect usb and write test file
  14. sonar6.7.6安装及汉化
  15. SVM较全面介绍,干货!(转载)
  16. VUE中过了一遍还不熟悉的东西
  17. centos7.2 python2.7升级python3.6退格键不能用
  18. 2019.02.09 codeforces gym 100548F. Color(容斥原理)
  19. mysql三大特性、三范式、五大约束
  20. Java并发之AQS详解(转)

热门文章

  1. Linux系统rabbitmq安装
  2. Hyperledger Fabric——balance transfer(四)安装和实例化chaincode
  3. Hyperledger Fabric——balance transfer(一)启动示例
  4. ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风
  5. layui 数据表格最简单的点击事件
  6. Kubernetes学习笔记(八):Deployment--声明式的升级应用
  7. 实验二:Linux系统简单文件操作命令
  8. 重学 Java 设计模式:实战建造者模式
  9. 【QT】利用pyqt5实现简单界面
  10. Java IO(五)字节流 FileInputStream 和 FileOutputStream