ios nslog 例子_iOS开发-使用宏自定义输出(NSLog)

前言:

1)输出日志是会大量损耗系统性能

2)输出的信息很容易会被截取到,导致信息不安全。

所以我们会在发行版(Release)取消所有的Log。如果一行一行地去注释掉Log,显然不是一个明确的选择。

因此我们可以使用宏去自定义Log输出。

最简单的一个例子

#ifdefDEBUG#define GCLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__);

#else

#define GCLog(...);

输出当前方法名

#define GCMethod(...) NSLog(@"%s", __func__);

使用方法

GCLog(@"sdf");

使用宏自定义输出,还可以很方便地管理输出的内容

#ifdef DEBUG

# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n"fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);#else # define DLog(...);#endif

摘自:http://blog.csdn.net/remote_roamer/article/details/7107320

参数解释

1) __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。2) __FILE__ 宏在预编译时会替换成当前的源文件名3) __LINE__宏在预编译时会替换成当前的行号4) __FUNCTION__宏在预编译时会替换成当前的函数名称

有了以上这几个宏,特别是有了__VA_ARGS__ ,调试信息的输出就变得灵活多了。

摘自:http://blog.chinaunix.net/uid-22878837-id-2110544.html

博文作者:GarveyCalvin

本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python小技巧积累--题库(持续更新)

介绍 作为一名程序员,除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键。 python内置库中就有很多简洁而又优雅的操作,这里的知识都来源于网络积累, 闲暇时整理下来方便温故。目录 >选择正确的内置功能 使用enum…

提高SQL执行性能方案:如何让你的SQL运行得更快

---- 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤…

休眠后gpio状态_STM32中GPIO的8种工作模式总结

STM32中GPIO的8种工作模式总结一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。形象点解释:推挽&#xff0c…

Ubuntu16.04 下 tensorRT安装

环境准备 主要是根据工程环境需要,参考trt文档安装trt 1.查看trt适配情况 :链接跳转,注意,不同版本的trt有不同版本的文档,请以最新文档为准。 2.根据自己系统情况下载相关包 因为我自己拉的docker镜像是ubuntu16.04…

左右xcode的重构选项的一些理解

Rename(重命名):对标示符进行重命名,以获得更好的代码可读性,这些标示符包含类,方法或者函数的名称. Extract(抽取):将你在XCode种选择的代码抽取到一个新的方法或函数中. Create SuperClass(创建父类):为Xcode中当前所选的类定义父类 Move Up(上移):将所选择的方法,属性,或实例…

window 如何查看tomcat 实时日志_如何处理生产环境Tomcat的catalina.out日志?

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。作者:jmcui 来源:http://1t.click/x4q# 前言随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要…

zabbix的agent端的主动模式关键三个参数

如多主机超过300和队列内容过多,就采用主动模式. [rootweb03 zabbix]# egrep -v "^#|^$" zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 StartAgents0 ServerActive172.16.1.8 Hostnameweb03…

opencv 绘制坐标曲线_OpenCV手工实现灰度及RGB直方图

#include #include#include#include#include#include#include#include#includeusing namespacecv;using namespacestd;//单通道图片直方图绘制void drawHist(vectornums){Mat hist Mat::zeros(600, 800, CV_8UC3);auto Max max_element(nums.begin(), nums.end());//max迭代器类…

onnx 测试_用于ONNX的TensorRT后端

用于ONNX的TensorRT后端解析ONNX模型以使用TensorRT执行。另请参阅TensorRT文档。有关最近更改的列表,请参见changelog。支持的TensorRT版本Master分支上的开发适用于具有完整维度和动态架构shape支持的TensorRT 7.2.1的最新版本。对于TensorRT的早期版本&#xff0…

paddlepaddle测试安装_百度paddlepaddle深度学习7日入门-CV疫情特辑心得

正值疫情严重之日,作为一名研究生被迫待在家里学习,手头的科研项目也严重受挫。。。偶然间,看到微信公众号发布这门课,马上报名,入坑!!!瞬间疫情其间有学习的目标了。。该课程学习依…

apache目录 vscode_VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven、springboot等所需要的扩展。开始步骤:在 Visual Studio Code 中打开扩展视图(CtrlShiftX)。输入“java”搜索商店扩展…

android dp转px的公式_Android特效专辑——自定义不一样的Toast

大家都知道,Android的控件有时候很难满足我们的需求,所以我们需要自定义View。自定义的方式很多,有继承原生控件也有直接自定义View的,今天写的是自定义的Toast,当然,这个不是复写Toast,是换一种表达形式&a…

code iban 是有什么组成_深入浅出Zookeeper(四):客户端的请求在服务器中经历了什么...

作者 泊浮目 沃趣科技高级研发工程师出品 沃趣科技1. 前言当我们向zk发出一个数据更新请求时,这个请求的处理流程是什么样的?zk又是使用了什么共识算法来保证一致性呢?带着这些问题,我们进入今天的正文。2. 设计模式&#xff1…

Centos7: 配置IO调度

今天有同事问我个问题:“CentOS7如何修改IO默认的调度”,我这里简单整理下如何调整的方法: 1、查看CentOS7下IO支持的调度 1234[rootkvm02 ~]# dmesg | grep -i scheduler [ 16.900459] io scheduler noop registered[ 16.900473] io sch…

启动activemq_「Java」 - SpringBoot amp; ActiveMQ

一、消息队列消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。目前在生产环境中使用较多的消息队列有ActiveMQ、Rabbit…

永不休眠怎么设置_电脑休眠后应该怎样唤醒?

可能有朋友会碰到这种情况,电脑屏幕显示正在休眠,而且不停的转圈,这是怎么回事,如何唤醒?下面让坚哥为大家分析一下吧。电脑开机显示休眠一般根据以下几种情况进行处理:1、正常电脑休眠:一般的是按一下电源…

配置ssl证书_Mysql配置ssl证书

本环境基于mysql5.6配置,通过openssl生成证书进行配置一、确认环境信息1、查看数据库版本mysql> select version();-----------| version() |-----------| 5.6.36 |-----------2、查看数据库是否支持ssl配置mysql> show variables like have%ssl%;-----------…

echarts散点图中大小_echarts在地图上绘制散点图(任意点)

项目需求:在省份地图上绘制散点图,散点位置不一定是哪个城市或哪个区县,即任意点通过查询官网文档,找到一个与需求类似的demo:,更改代码,将中国地图替换为省份地图,省份地图的js代码…

如何让图片充满excel单元格_如何在Excel单元格建立下拉菜单

对于一些常用的数据我们往往会希望能够尽量快速的输入,下拉菜单就是一个最简单的解决办法。那么如何实现下拉菜单呢?跟随以下步骤,建立属于自己的下拉菜单吧!如何建立下拉菜单?一、确定内容:在单元格中&…

pgsql中float4导致java程序精度丢失_Java基础系列02

注释Java中支持三种注释:1.单行注释以//开始换行结束。2.多行注释以/*开始,以*/结束。3.说明注释以/**开始,以*/结束。关键字关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。例如上篇文章中Hello…