`
xiaoheliushuiya
  • 浏览: 401749 次
文章分类
社区版块
存档分类
最新评论

iOS开发-NSLog不打印设置

 
阅读更多

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能,针对这种问题可以写一些宏来控制这些调试信息的输出。


在release版本禁止输出NSLog内容

因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。

我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。


如何实现:

-Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度。我们知道当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;)文件中添加
  1. #ifdefDEBUG
  2. #defineNSLog(...)NSLog(__VA_ARGS__)
  3. #definedebugMethod()NSLog(@"%s",__func__)
  4. #else
  5. #defineNSLog(...)
  6. #definedebugMethod()
  7. #endif

上段代码的意思就是 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译;



这个DEBUG在哪设置呢,

在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme
设置Build Configuration成Debug时,就可以打印nslog了。
设置Release,发布app版本的时候就不会打印了,提高了性能
分享到:
评论

相关推荐

    iphone开发学习笔记(1)--NSLog

    iphone开发学习笔记(1)--NSLog

    Teleport-NSLog, iOS远程日志记录将NSLog消息发送到后端服务器.zip

    Teleport-NSLog, iOS远程日志记录将NSLog消息发送到后端服务器 传送 nslog 当你的应用程序在用户的设备中运行时,传送NSLog捕获NSLog消息,并将它们发送给指定的后端服务器。 在Xcode中调试时,我们使用NSLog将许多...

    扩展NSLog实现按class的自定义NSLog内容输出

    在iOS开发中,debug时经常要用到NSLog输出内容,debug完成后又需要去掉,比较麻烦,内容也不够详细。参考网上资源,扩展NSLog并利用宏替换实现按class打开或关闭的详细的NSLog输出,可以方便使用。

    IOS NSlog处理

    IOS上线项目NSLog处理

    iOS中控制NSLog输出时机详解

    本文给大家介绍的是iOS开发中关于nslog的输出时机的相关内容,非常简单实用,有需要的小伙伴可以参考下

    iOS手机端日志打印显示工具源码

    iOS手机端log打印显示工具源码,在不连接xcode时,你仍然可以清晰的看到app内系统日志以及NSLog打印的日志,开发调试必不可少,大大提高调试效率,不用时时都链接xcode。 快速方便集成,两行代码即可搞定。 这里提供...

    ios-IOS下拉菜单.zip

    NSLog(@"selected=东方不败;"); break; case 1: NSLog(@"selected=步惊云;"); break; case 2: NSLog(@"selected=女娲大帝;"); break; default: break; } }]; pd.backgroundColor=...

    ios开发小技巧

    iOS开发之UIlabel多行文字自动换行 (自动折行) UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, ...

    ios-DebugWindow一个在真机上测试时方便查看输出日志的小工具。.zip

    - 重定向NSLog输出日志到文件中,这样你就不用替换到你项目中已有的NSLog()代码啦。 - 重定向程序奔溃日志到文件中。 - 自动根据当前设备信息选择要不要记录日志的同时把日志打印到控制台。 - 方便增删改查当前...

    iOS中日志同步获取NSLog重定向以及其他详解

    前言 对于那些做后端开发的工程师来说,看LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多...在iOS开发中,我们经常会用到NSLog调试,但是我们却不太了解它。在NSLog本质是一个C函数,它的函

    ios-自定义倒计时.zip

    自定义倒计时视图,提供结束时间(两种格式NSDate,NSString),实现倒计时效果 JYCountDownView *view = [JYCountDownView loadCountDownView]; view.center = self.view.center;... NSLog(@"哈哈,倒计时结束了哎

    ios-MTAlertCategory - UIAlertView封装支持兼容7.0一下.zip

    简单的 UIAlert 封装 如果 (iOS )使用 UIAlertView 如果 (iOS >= 8) UIAlertViewController. 使用方法和示例 UIAlertCategory * a = [[UIAlertCategory alloc] initWithTitle:@"警告" WithMessage:@"你有条...

    ios-UITextView-可以和UITextField一样设置placeholder,支持autolayout布局,可以限制字数。.zip

    简单使用: PlaceholderTextView *textView = [[PlaceholderTextView alloc]init]; textView.placeholderLabel.font = [UIFont systemFontOfSize:15]; ... NSLog(@"%@",textView.text); }];

    iphone 开发学习基础NSLog

    iphone 开发学习基础NSLog,初学者使用。

    nslog输出格式 iphone开发

    nslog输出格式 iphone开发 非常好用的nslog,提供各种格式的输出。

    ios-NSAuthorityManager.zip

    NSAuthorityManage,是一个iOS设备权限管理器,可以用它来做更友好的设备权限交互体验。 你可以参考periscope提示设备权限的UI来完成自己的权限提示 ,你也可以自己设计一个UI来完成它。 使用方式及其简单: if...

    ios-CCPPickerView.zip

    解决的需求:左边选择的金额或者月份不能大于右侧选择的金额或者月份,并且进行联动. //在确定的回调中将选择的数据(左侧的数据,右侧的数据以及拼接完成的数据进行返回) //注意金额按万为单位返回,时间按月份为单位...

    ios-一个iOS调试工具,监控所有HTTP请求,自动捕获Crash分析。.zip

    一个iOS调试工具,监控所有HTTP请求,自动捕获Crash分析。 1.当出现功能异常时,有很大可能是与...3.打印系统日志,NSLog输出的log可以在DebugTool中及时查看,解决了只能连接电脑调式才能看到log,大大的方便咯。

    ios-自定义时间选择器(自定义样式、时间、自动布局).zip

    之前提交的版本在模拟器或小屏幕上会不显示月份的BUG,是由于自动布局的问题,现已经修复,感谢大家的支持和反馈!谢谢! 使用方法: // 开始时间 [self setupDateView:DateTypeOfStart]; // 结束时间 ...

Global site tag (gtag.js) - Google Analytics