NSLog 的宏替换

作者: 莫太极 | 来源:发表于2016-09-24 17:08 被阅读0次

        在开发程序、或是调试程序时,我们或多或少会使用NSLog。可是随着代码量的增加,NSLog的数量也是剧增。一旦到了程序上架那天,我们该怎么办呢?你该不会说要“一个一个删”吧。话不多说,直接来代码

在OC中

#ifdef __OBJC__     保证 #ifdef 中的宏定义只会在OC的代码中被引用 

否则,一旦引入C/C++的代码或者框架,就会出错!

#ifdef __OBJC__

#ifdef DEBUG

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

#else

#define NSLog(...)

#endif

#endif

因为宏是直接替换的优先级会更高。所以,通过这种方式更方便的把现有代码替换

#define NSLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)  为自定义部分,

              __PRETTY_FUNCTION__  哪个类调用的哪个方法

              __LINE__  打印代码所在的行数

              ##__VA_ARGS__  这部分就是打印的正文了。

如我在ViewController里面写了一句代码

打印结果如下

-[ViewController viewDidLoad] [Line 20] **********************hello Lele

当然如果你只希望打印正文,那么只要这么写 #define NSLog(...) NSLog(__VA_ARGS__) 就够了 

那么问题来了,这只是宏替换啊,说好的去log呢?

这时 #ifdef DEBUG 这句作用来了。

Xcode的左上角

选中Release后,再运行程序,控制台就不会打印了


差点忘记说了,上面的那些代码要写在PCH文件中,这样才能保证全局替换。

额(⊙o⊙)…PCH是什么? 照顾一些新手,,简单说一下,PCH文件的作用就是可以把所有的宏写在这个文件了,适配后整个工程内的所有的文件都可以使用这些宏。说是PCH耗性能,但是由于其好用的性能,还是很受欢迎的。。

适配PCH  ...

Xcode8.0(按照红框的选,都一样)

名字可以自己起,也可以用默认名。创建完成之后,开始适配

最后一步可以直接拖PCH文件进去,然后再逐个删路径头

注意:如果你的PCH文件创建在工程外,也就是与工程名平级。那么就必须写全路径了(拖)


Swift


/** 自定义打印

 - parameter message:  内容

- parameter file:    类名

- parameter function: 方法名

- parameter line:    行数 */

func printLog(_ message: T, file: String = #file, function: String = #function,line: Int =  #line){

#if DEBUG

let newFile = (file as NSString).lastPathComponent

let result = "\(newFile) [\(line)] \(function) : \(message)"

print(result)

#endif

}

因为与OC差不多 这里就不赘述了

相关文章

  • Xcode8真机调试测试NSLog不输出日志

    我们可以通过宏定义来替换原来的NSLog

  • NSLog 的宏替换

    在开发程序、或是调试程序时,我们或多或少会使用NSLog。可是随着代码量的增加,NSLog的数量也是剧增。...

  • Xcode8-NSLog打印JSON的时候,控制台显示不完整

    通过宏定义用printf()函数来替换原来的NSLog:

  • iOS开发中常用的宏定义

    iOS开发中常用的宏定义 尺寸宏 打印宏 替换NSLog来使用,debug模式下可以打印很多方法名,行信息。 #...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • 关于NSLog控制台打印不完整

    //通过宏定义用printf()函数来替换原来的NSLog,(该修改仅针对开发模式生效)#ifndef __OPT...

  • iOS10 log打印不全

    今天在各种搞自定义宏,替换NSLog。修改宏的次数特别多。大家都知道修改任意一个宏,项目就要重新编译。原来项目编译...

  • NSLog替换

    NSLog有两种方式处理 1.如下,pch文件里,把NSLog改成FLLog, 以后所有的log你写成FLLog就...

  • iOS调试 - NSLog

    NSLog效率低下的原因及尝试lldb断点打印Log 宏定义的黑魔法 - 宏菜鸟起飞手册 NSLog 的优化 情况...

  • NSLog 打印全部信息

    NSLog 打印全部信息 宏定义 NSLog 打印中文 先写一个转义方法 NSLog 打印中文使用 可以在...

网友评论

    本文标题:NSLog 的宏替换

    本文链接:https://www.haomeiwen.com/subject/qgpxyttx.html