iOS开发PCH文件、NSLog真机不打印

添加PCH文件

现在Xcode6、7创建一个新的工程时将默认不会再带有PCH文件,需要手动添加PCH文件。

  1. 在Supporting Files目录下,选择 File > New > File > iOS > Other > PCH File 然后点击下一步进行命名,建议命名格式为项目名称-Prefix,如图Demo
  2. 创建的PCH文件与编译器Xcode进行连接:找到 Project > Build Settings > 搜索 “Prefix Header“;
  3. 在Apple LLVM X.0 -Language栏目中能够找到Prefix Header,双击之后添加该PCH文件地址,如图所示:

    这样Xcode6、7的PCH文件就能够顺利加到工程中去了。

NSLog函数真机不打印

在实际项目中NSLog函数打印信息是必不可少的事情,可以友好的帮助我们调试程序,然而在模拟器上占用的是电脑的内存,但在真机上线时如果不把NSLog函数屏蔽掉,势必会造成内存的占用,性能的减弱,这对做一款优秀的App的出发点是十分违背的,所以在真机中借助PCH设置全局变量不打印NSLog函数是实战项目中必不可少的要求。

先学习个预备C语言知识:

C语言里面包含了两个执行条件编译

1.
#ifdef 宏名称

//任意语句

#endif

个人感觉就相当于if….else的功能

2.    #if 表达式

     #elif 表达式

     //任意语句

     //可以有零个或多个#elif语句

     //最后的#else语句也可以省略

     #else

     //任意语句

     #endif

个人感觉相当于if…else if…. else功能

好啦我们有了上面C语言的基础在刚才建立的PCH中对NSLog进行改造:

  #ifdef DEBUG

  #define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" 

 "[函数名:%s]\n" "[行号:%d] \n" fmt), 

  __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);

 #define DeBugLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, 

 __LINE__, ##__VA_ARGS__);

 #define NSLog(...) NSLog(__VA_ARGS__);

%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],

 __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
  #else

  #define DLog(...)

  #define DeBugLog(...)

  #define NSLog(...)

  #define MyNSLog(FORMAT, ...) nil

  #endif

 
* 1) VA_ARGS 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的”,”去掉的作用,否则会编译出错, 你可以试试。

  • 2) FILE 宏在预编译时会替换成当前的源文件名
  • 3) LINE宏在预编译时会替换成当前的行号
  • 4) FUNCTION宏在预编译时会替换成当前的函数名称

OK了,测试一下吧!真机与模拟的互相切换


时间: 2024-09-24 22:39:43

iOS开发PCH文件、NSLog真机不打印的相关文章

iOS开发笔记 8、真机调试和发布软件

首先根据需要缴纳$99/299的费用加入成员计划. 按照如下的不同角色和操作界面即可完成代码的调试和发布   概括起来: 申请人Team Agent角色加开发管理员和申请软件的发布 Team Admin开发管理员可以自己调试和加人   过程涉及:证书,apple ID,机器ID等系列的步骤,比较麻烦,简便的方法 1.将iphone/ipad连接到USB接口 2.在Xcode的Window/Oragnize窗口中,在看到的设备上让他自动Provisoing,只要输入在apple上注册的账号和密码,

android adb-mac下用Android adb命令安装apk文件到真机报错

问题描述 mac下用Android adb命令安装apk文件到真机报错 MacdeMacBook-Pro:~ mac$ adb devices List of devices attached 0021e8d2e115e57a device MacdeMacBook-Pro:~ mac$ adb install -r ~/downloads/app-release.apk failed to copy '/Users/mac/downloads/app-release.apk' to '/dat

UIDPlayer For iOS发布!原型与真机的完美邂逅!

也许你已经是UIDesigner For Mobile的高级设计师,也许你已经通过UIDesigner For Mobile完成若干产品设计并上线,甚至给你的公司带来巨大成功,但你心中也许仍有一丝遗憾仍未得到满足,那就是,你的设计不得不一直都呆在电脑里,直到开发工程师把它实现的那一天. 其实,在你将产品设计出来的那一刻,你和你的团队就可以开始为之欢呼,你的老板可以开始为之喝彩,你的客户可以开始对方案做出反馈,而这一切并不需要等待开发工程师将它实现那天.为此,腾讯CDC开发出UIDPlayer F

iOS开发中文件的上传和下载功能的基本实现_IOS

文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: 复制代码 代码如下: YYViewController.m #import "YYViewController.h" #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] @interface YYV

关于集成环信iOS客户端的问题(真机调试的问题)

问题描述 集成iOS环信客户端的问题:集成环信3.0demo时遇到了真机调试的时候报错,不知道该如何解决,请个位大神支招,谢谢. 解决方案 看下报错中的那个图片设置有什么问题.解决方案二:不知道是xcode的什么问题,网上有关真机的png问题,修改相关属性值为NO就可以,后来发现改为YES也没事,xcode不知道是咋回事了....

Android开发必备:秒杀真机超快模拟器Genymotion介绍_Android

第一,这货速度太快,第二,模仿真机环境,第三,秒杀任何Android模拟器包括真机,不多说上图,我忒忙! 官网: http://www.genymotion.com/ 镜像图片可以创建多个模拟器 关键是有一切Google的服务,在Google眼里就是一个真机 骚年不知道外界的Android,已经发生了翻天覆地的变化!

Android开发必备:秒杀真机超快模拟器Genymotion介绍

第一,这货速度太快,第二,模仿真机环境,第三,秒杀任何Android模拟器包括真机,不多说上图,我忒忙! 官网: http://www.genymotion.com/ 镜像图片可以创建多个模拟器 关键是有一切Google的服务,在Google眼里就是一个真机 骚年不知道外界的Android,已经发生了翻天覆地的变化!

iOS开发之文件(分段)下载

1.HTTP HEAD方法 ? 1 2 3 4 5 6 7 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:kTimeout]; request.HTTPMethod = @"HEAD"; [NSURLConnection sendAsynchronousRequest:request queue:self.myQueue compl

Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略

原创文章,欢迎分享:未经许可,不得转载:版权所有,侵权必究 开发环境使用的是目前为止最新的稳定版软件:Mac OS X Lion 10.7 + Xcode 4.1 目前Xcode 4.2 Preview版也已经发布,据说其修改方法跟4.1非常类似,只改动了一行代码,请参看参考文章的第二篇.本文仍以4.1版本为例. 更新:现在Xcode 4.2正式版和iOS 5均已发布,下面补充上4.2的修改方法.(2011-10-24) 各步骤会标明版本,比如(Xcode4.1请执行)和(Xcode4.2请执行