debug 下NSLog 的处理


代码编写的过程中,不可避免需要应用NSLog函数打印很多调试信息,为了更好的使用答应信息,我们可以自定义自己的全局信息打印函数。

一般步骤介绍如下:

一、配置 pch 文件

 现在的 Xcode 版本都不再自动生成pch文件,所以还需要先新建并座椅简单的Xcode设置

1. new file  > other > PCH file  > 命名为PROJectPrefixHeader。  会生成一个拓展名为.pch的文件(PROJectPrefixHeader.pch)

2.选择工程  target > Build Settings (搜索prefix header定位到) > Apple LLVM , 将Prefix Header添加设置:PROJect/PROJectPrefixHeader.pch(工程名/.pch 名)。将上方的Precompile Prefix Header 设置为YES,顺便command + B编译一下,没问题就完成pch 导入了。


二、在pct 中添加的引用将是工程全局可见的,(不过不要什么都往里头添加,会增加编译耗时的)

1. pct 默认生成的时候里面没有任何内容,早期的Xcode版本自动深处.pch 文件中会有如下内容

#ifdef __OBJC__

    #import <UIKit/UIKit.h>

    #import <Foundation/Foundation.h>


#endif

    注意:a. #ifdef __OBJC__  (code ) #endif 这个有作用是保证#ifdef 中的宏定义,文件头引入,等 只是在 OC 的代码中被引用。避免了一些可能出错的情况,如一旦引入一 些 C / C++ 的代码或者框架可能会出的问题。

b. 其中(code )部分是我们在 OC 中要使用的 全局引入代码 或者 宏定义, 接下来对自定义的信息打印输出函数的宏代码也要放在这个位置。

2. 下面给了两种定义方法,如果是新建工程,刚开始,建议使用第一种方式,

#ifdef DEBUG //Xcode中默认已经定义了DEBUG宏(Build Settings > Preprocessor Macros  : DEBUG

#  define XLOG(fmt, ...) do {                                            \

NSString* file = [[NSString alloc] initWithFormat:@"%s", __FILE__]; \

NSLog((@"%@(%d) " fmt), [file lastPathComponent], __LINE__, ##__VA_ARGS__);\

} while(0)


#  define XLOG_METHOD NSLog(@"%s", __func__)

#  define XLOG_CMETHOD NSLog(@"%@/%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))

#  define XLOG_TRACE(x) do {printf x; putchar('\n'); fflush(stdout);} while (0)

#else

#  define XLOG(...)

#  define XLOG_METHOD

#  define XLOG_CMETHOD

#  define XLOG_TRACE(x)

#endif


如果想要继续使用NSLog ,也可以做如下处理:

#ifdef DEBUG 

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

#else

#define NSLog(...)

#endif





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值