`

重写系统NSLog ------宏定义

 
阅读更多

       在程序运行过程中,通常会打印一些信息来帮助我们跟踪运行定位,但是程序中过多的NSLog在运行过程中是非常耗内存的,然而用户在使用时并需要这些追踪信息。

弊端:

1、消耗手机运行内存;

2、不可避免的泄露一些敏感信息;

//重写NSLog,Debug模式下打印日志和当前行数
#if DEBUG

#define NSLog(format, ...) do {                                             \
fprintf(stderr, "<%s : %d> %s\n",                                           \
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],  \
__LINE__, __func__);                                                        \
(NSLog)((format), ##__VA_ARGS__);                                           \
fprintf(stderr, "-------\n");                                               \
} while (0)
#define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)
#define NSLogSize(size) NSLog(@"%s w:%.4f, h:%.4f", #size, size.width, size.height)
#define NSLogPoint(point) NSLog(@"%s x:%.4f, y:%.4f", #point, point.x, point.y)
#else
#define NSLog(FORMAT, ...) nil
#define NSLogRect(rect) nil
#define NSLogSize(size) nil
#define NSLogPoint(point) nil
#endif

#endif

 【注】在使用上述重写方式,要确保如下图片中参数一致

图片中的"DEBUG"与代码中的"DEBUG"统一。

 

  • 大小: 26.8 KB
0
1
分享到:
评论

相关推荐

    NSLog-YuHaitao.github.io:我的博客网站 https

    【描述】"NSLog-YuHaitao.github.io 我的博客网站"简单明了地表明该资源是一个名为NSLog-YuHaitao.github.io的个人博客站点,是作者个人的在线空间。在GitHub上创建和托管的博客通常使用Markdown语言编写,便于管理...

    iphone开发学习笔记(1)--NSLog

    在iOS开发中,Objective-C是主要的编程语言,而`NSLog`是开发者最常用的工具之一,用于在程序运行时输出调试信息。本篇笔记将详细介绍`NSLog`的使用和其在iPhone应用开发中的作用。 `NSLog`是Foundation框架的一...

    Teleport-NSLog, iOS远程日志记录将NSLog消息发送到后端服务器.zip

    Teleport-NSLog, iOS远程日志记录将NSLog消息发送到后端服务器 传送 nslog 当你的应用程序在用户的设备中运行时,传送NSLog捕获NSLog消息,并将它们发送给指定的后端服务器。 在Xcode中调试时,我们使用NSLog将许多...

    XCode用NSLog输出系统字体名称Demo

    这个“XCode用NSLog输出系统字体名称Demo”是一个实用的示例,它展示了如何利用Objective-C编程语言在Xcode环境下获取并打印出iOS系统中所有可用的字体名称。对于开发者来说,了解系统内置的字体资源是非常有用的,...

    扩展NSLog实现按class的自定义NSLog内容输出

    在iOS开发中,debug时经常要用到NSLog输出内容,debug完成后又需要去掉,比较麻烦,内容也不够详细。参考网上资源,扩展NSLog并利用宏替换实现按class打开或关闭的详细的NSLog输出,可以方便使用。

    Objective-C 宏定义详细介绍

    Objective-C的宏定义是预处理器(Preprocessor)的一部分,它允许程序员在编译期间进行文本替换,从而提高代码的可读性和效率。宏定义有两种主要类型:对象宏和函数宏。 1. 对象宏(Object-like Macro) 对象宏用于...

    iOS中常用的宏定义总结

    本文将详细介绍一些常用的iOS宏定义,包括UI元素尺寸、日志输出、系统信息获取等方面。 1. UI元素尺寸宏定义: - `NAVIGATIONBAR_HEIGHT`:定义导航栏的高度,通常为44像素。 - `STATUSBAR_HEIGHT`:定义状态栏的...

    iOS开发中那些高效常用的宏 - 新风作浪的博客专栏 - 博客频道 - CSDN.NET1

    在iOS开发中,宏定义是Objective-C编程中一个非常实用的工具,它们可以用来简化代码、提高效率并增强代码的可读性。标题中的“iOS开发中那些高效常用的宏”指的是开发者在iOS应用开发过程中经常使用的宏定义,这些宏...

    IOS NSlog处理

    1. **条件编译**:通过使用预处理器宏,我们可以根据是否处于DEBUG模式来决定是否启用`NSLog`。在`Release`模式下,`NSLog`可以被关闭或者替换为无操作。 ```swift #ifdef DEBUG #define NSLog(...) NSLog(__VA_...

    iOS开发中常用的一些宏定义.zip

    在iOS开发过程中,宏定义(Macro Definitions)是Objective-C编程中一种常见的技术,它允许开发者在编译时进行代码替换,提高代码的可读性和可维护性。`Macro-master`这个压缩包文件很可能是包含了一些常用的宏定义...

    iphone 开发学习项目创建及调试输出NSLog

    ### iPhone开发学习项目创建与调试输出NSLog详解 在iPhone应用开发中,使用Objective-C语言进行编程时,熟练掌握项目创建流程以及利用`NSLog`进行调试是至关重要的技能,尤其是对于初学者而言。本文将从创建一个新...

    iphone 开发学习基础NSLog

    在iOS开发中,Objective-C是主要的编程语言之一,尤其对于初学者来说,理解并熟练使用NSLog是非常重要的。NSLog是苹果提供的一个用于在控制台打印日志信息的工具,它在调试代码、追踪问题时起着至关重要的作用。本篇...

    iOS中控制NSLog输出时机详解

    例如,在给定的代码中,我们可以看到使用了宏定义来控制NSLog的输出: ```objectivec #define SLOG(fmt, ...) if (reportLoggerIsOpen) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS_...

    iOS开发之简单埋点,通过改变系统NSLog的输出信息写入到文件和自定义方式写入文件的实现.zip

    操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...

    Objective-C中的重载和重写详解

    重写是指在子类中重新定义父类中的某个方法,以提供不同的实现。在Objective-C中,这是通过关键字`@override`来标记的,尽管在某些情况下,即使不使用`@override`,子类也可以重写父类的方法。重写要求子类方法与...

    Objective-C培训资料(修改版).pdf

    - Objective-C中的BOOL类型和C++不同,1为true宏定义为YES,0为false宏定义为NO。 4. 基本程序结构: - 程序入口点为main函数,通常包含`#import&lt;Foundation/Foundation.h&gt;`,这是导入Foundation框架的指令。 - ...

    nslog输出格式 iphone开发

    nslog输出格式 iphone开发 非常好用的nslog,提供各种格式的输出。

    Objective-C中NSLog输出格式大全

    在Objective-C编程中,`NSLog` 是一个非常常用的函数,用于在控制台输出日志信息,便于开发者在调试程序时查看变量的状态和程序运行流程。`NSLog` 支持多种格式化输出,以便输出不同类型的变量。下面将详细解释`...

    IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog输出方式

    但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式。这样,发布的App就不会在程序内部做大量...

Global site tag (gtag.js) - Google Analytics