我是靠谱客的博主 安详小天鹅,最近开发中收集的这篇文章主要介绍12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.自定义类的格式化日志输出

        当我们自定义一个类,需要打印该类对应的对象信息时,往往只能打印出他们的内存,如果我们想打印出我们想看到的一些数据成员就必须要一一打印,这样往往比较麻烦。所以我们需要格式化日志输出,使得NSLog出我们需要的信息:

               方法是在该类实现文件中重写description 方法,在该方法的返回值中格式化要打印的内容即可。

-(NSString *)description
{
return <#expression#>
}

2.系统类的格式化日志输出

        这里我们需要以系统类创建一个分类,然后重写- (NSString *)descriptionWithLocale:(id)locale; 注意这里不能重写description 方法,在该方法中做一些格式化操作即可。下面是对NSArray和NSDictionary的方法进行重写:

#import <Foundation/Foundation.h>
@implementation NSDictionary (Log)
- (NSString *)descriptionWithLocale:(id)locale
{
NSMutableString *str = [NSMutableString string];
[str appendString:@"{n"];
// 遍历字典的所有键值对
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[str appendFormat:@"t%@ = %@,n", key, obj];
}];
[str appendString:@"}"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
// 删掉最后一个,
[str deleteCharactersInRange:range];
return str;
}
@end
@implementation NSArray (Log)
- (NSString *)descriptionWithLocale:(id)locale
{
NSMutableString *str = [NSMutableString string];
[str appendString:@"[n"];
// 遍历数组的所有元素
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[str appendFormat:@"%@,n", obj];
}];
[str appendString:@"]"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
// 删掉最后一个,
[str deleteCharactersInRange:range];
return str;
}
@end
            两个类的重写可以一起放在一个.m文件中,编译时系统会自动编译。这样即可实现格式化日志输出了。


3.发布状态自动关闭NSLog方法

       在pch文件中键入以下代码即可:

#ifdef DEBUG // 调试状态, 打开LOG功能
#define HMLog(...) NSLog(__VA_ARGS__)
#else // 发布状态, 关闭LOG功能
#define HMLog(...)
#endif



最后

以上就是安详小天鹅为你收集整理的12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法的全部内容,希望文章能够帮你解决12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部