不直接用NSLog

公司中不直接使用NSLog,而是利用宏定义自己的打印函数,将该打印函数写在项目的.pch文件中.调试的时候往往用到好多打印,但发布的时候确不需要.(一下是在公司中的一些处理)

自定义NSLog

一,固定写法:

#define  MYLog(...)  NSLog(__VA_ARGS__)

二,注意:

1,MYLog括号中的...是固定写法,表示可以接受任意多个参数.

2,NSLog括号中的__VA_ARGS__  也是固定写法,前后用了两个下划线

三,使用方式:

项目中Supporting files文件夹下有个 "工程名-Prefix.pch"文件,你可以在该文件下声明

#define  MYLog(...)  NSLog(__VA_ARGS__)

这样之后工程中的任何一个文件中都可以使用改自定的打印函数(也就是说可以在该.pch中放一些全局的东西)

四,好处:

这样使用的好处就是,项目调试期间,我们可能会用到好多MYLog()函数打印.

如果不需要时,只需将.pch中该宏修改为:(这样就相当于MYLog()代表的是注释了)

#define  MYLog(...)  //NSLog(__VA_ARGS__)

五,修改:(这样做还不够智能,每次调试的时候需要用到打印,发布的时候不需要打印还要手动修改一下)

其实系统提供了一个宏  DEBUG 表示在调试状态下

因为上述代码可以优化为:    (下述代码是公司常用代码)

?


1

2

3

4

5

#ifdef DEBUG  //调试阶段

#define MYLog(...)  NSLog(__VA_ARGS__)

#else //发布阶段

#define MYLog(...)

#endif

时间: 2024-11-05 11:34:56

不直接用NSLog的相关文章

HDU 5908 Abelian Period 可以直接用multiset

http://acm.hdu.edu.cn/showproblem.php?pid=5908 要求把数组分成k组使得每组中的元素出现次数相同 就是分成k个集合,那么直接用multiset判定就可以 有重载相等运算符的 我被坑了的就是, 对于2个元素一个集合的可以,那么,4,6,8这样分集合也是可以的. 这个很容易理解 但是,你也要能平均分才行啊 就是10的2可以,但是4是一定不可以得.不能平均分 #include <cstdio> #include <cstdlib> #inclu

每日学习笔记----js中可以直接用id名调用的问题?

在JavaScript中,标准的id选择器调用语法是: document.getElementById('myid').style.width = pc + "%"; 但是,今天发现,直接用id名字调用竟然也可以正确运行: myid.style.width = pc+"%"; 最后找度娘问了问. 看到Mrcxt的博客里面有这个问题,问题的答案是: 这个最初是 IE 里面的,后来 firefox chrome 好像也支持了. 不建议使用,这个不是标准里面的,将来不一定

configParse 模块直接用

#!/bin/env python #-*- coding:utf-8 -*- from ConfigParser import ConfigParser import json def getConfigObject(filename):     """获得配置文件对象     """     _config_ = ConfigParser()     _config_.read(filename)     return _config_ de

为什么是List_list_=_new_ArrayList()_而不直接用ArrayList

为什么是List list = new ArrayList(),而不直接用ArrayList? 编程是要面向对象编程,针对抽象(接口),而非具体.List 是接口,ArrayList是实现. 实现List接口的有ArrayList.LinkedList.Vector等,所以用哪个就直接new 一个接口实现 这是一种很好的设计模式.一个接口有多种实现,这种写法是java面向对象的一种思想,依赖倒置原则,即依赖于抽象不依赖于实现(具体). 给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承

配置Nginx防止直接用IP访问Web服务器

看了很多Nginx的配置,好像都忽略了ip直接访问Web的问题,这样理论上不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面. 官方文档中提供的方法: If you do not want to process requests with undefined "Host" header lines, you may define a default server that just drops the requests: server { li

如何在扫描完二维码后, 直接用Facebook App进到粉丝专页而不是网页版

假设我们推广了一枚二维码, 用户扫面二维码就用通过手机浏览器进入点专页,而不是facebook app, 是不是觉得很麻烦呢? 有没有办法解决呢?答案当然是有的! 一.取得Facebook粉丝专页id 代码 首先我们必须取得Facebook id 代码才能完成后面的动作,一般来说如果你的粉丝专页还没有取短网址的话, 你可以直接在网址列中就可以找到你的Facebook粉丝专页的id(如图红框所示) 但如果你已经取了短网址, 那你必须在网址列输入http://graph.facebook.com/{

在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解

看了很多nginx的配置,好像都忽略了ip直接访问web的问题,不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面. 官方文档中提供的方法: If you do not want to process requests with undefined “Host” header lines, you may define a default server that just drops the requests: server { listen 80 de

直接用SQL语句把DBF导入SQLServer

直接用SQL语句把DBF导入SQLServer   在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,’Data Source=”e:share”;User ID=Admin;Password=;Extended properties=dBase 5.0’)...bmk 这样就可以把e:share中的bmk.dbf表导入到Sqlserver中, 速度是最快的 ---------------

compile时提示CListCtrl没有声明,为什么这个mfc的类不能直接用?

compile时提示CListCtrl没有声明,为什么这个mfc的类不能直接用? 解决办法: #include <afxcmn.h>