iOS开发之NSLog的使用

原创 2016年06月01日 15:27:01

我们在调试程序时,经常会使用NSLog函数打印出一些日志信息。当我们准备发布程序时,则不希望这样的调试日志出现。我们会自定义这个函数,在debug的时候,正常打印出我们所需要的内容,但在release版本时,则关闭日志输出。

更多的,我们会这样去写:

#ifdef DEBUG
    #define SKLog(farmat, ...) NSLog(farmat, ##__VA_ARGS__)
#else
    #define SKLog(farmat, ...) nil
#endif

或者更详细的日志:

#ifdef DEBUG
    #define SKLog(farmat, ...)  NSLog(@"file:%s\t function:%s\t line:%d\t %s\n", [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __FUNCTION__, __LINE__,[[NSString stringWithFormat:farmat, ##__VA_ARGS__] UTF8String])
#else
    #define SKLog(farmat, ...) nil
#endif

虽然我们经常这样去使用这样的宏,但每个参数究竟是什么意思呢?

    __FILE__ :在编译时会替换成当前的源文件路径,本例子中,我们只取源文件名
    __FUNCTION__ :在编译时会替换成当前的函数名称
    __LINE__ :在编译时会替换成当前的行号
    __VA_ARGS__:一个可变参数的宏,前面加##的作用在于,当可变的参数个数为0时,这里 ## 起到把前面多余的逗号‘,’去掉的作用


版权声明:本文为博主原创文章,未经博主允许不得转载。

Swift学习,NSLog的使用(一)

我的开发环境 操作系统:OS X EI Capitan 10.11.1 (15B42) 电脑型号:MacBook Pro(Retina 显示屏,15 英寸,2013 年末) 处理器:2.3 GHz I...
  • huanghyw
  • huanghyw
  • 2015年11月07日 17:09
  • 2267

NSLog和@“字符串”

使用#import导入了foundation框架的主头文件之后,就可以开始使用心得特性编写代码了。helloworld中第一行也是唯一的一行执行程序实际代码使用了NSLog()函数, NSLog(@"...
  • u012815442
  • u012815442
  • 2015年12月05日 09:21
  • 312

黑马程序员———NSLog与printf的区别

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-因为NSLog是OC环境特有的输出函数,printf在C语言和OC中均可调用。printf()函数是标准格式化输出...
  • zuoyeyuqinglan
  • zuoyeyuqinglan
  • 2015年02月08日 16:08
  • 328

NSLog格式化输出数据——Object—C

本文转自:点击打开链接  1 . 几种常用类型变量声明     int i =10;       BOOL isShow=YES;      BOOL isShow=1;   ...
  • u011981018
  • u011981018
  • 2014年12月02日 09:17
  • 4884

自定义NSLog——彰显个性化

项目调试过程中,有两大神器。一是断点,二是Log。而工程中出现的大量Log输出,在发布版本时是需要注释掉的。一方面是因为可能会暴露APP里的保密数据,另一方面也是最主要的原因就是它会占用时间和设备资源...
  • snowrain1108
  • snowrain1108
  • 2016年04月19日 16:34
  • 822

iOS开发-NSLog不打印设置

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很...
  • JackRen_Developer
  • JackRen_Developer
  • 2016年08月04日 12:01
  • 1628

NSLog打印优化

1 NSLog在开发过程中,我们会使用NSLog打印一些日志,如果在NSArray或NSDictionary中有中文字符时,如下。NSArray *array = [NSArray arrayWith...
  • y550918116j
  • y550918116j
  • 2015年11月17日 13:39
  • 1154

iOS中NSlog重定向到文件

1、应用场景: 对于真机,日志没法保存,不好分析问题。所以有必要将日志保存到应用的Docunment目录下,这样才能取出分析。 2、相关知识: 日志输出,分为c的printf和标准的NS...
  • xiaonaiping061
  • xiaonaiping061
  • 2016年03月03日 16:09
  • 1719

xcode下关闭NSLog功能

以下内容来自 在-Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编...
  • saikyuusakae
  • saikyuusakae
  • 2014年10月13日 14:51
  • 918

使用PCH及巧妙使用NSLog

看到别人的博客写的不错,做个人的备忘 在xcode6.01以前是有prefix.pch文件的,Xcode6.01以后就没有了,但是可以自己去创建! 前提:在XCod...
  • huang781178325
  • huang781178325
  • 2015年11月12日 13:51
  • 366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发之NSLog的使用
举报原因:
原因补充:

(最多只允许输入30个字)