12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法
2015-09-07 11:05
991 查看
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
相关文章推荐
- Android Native 绘图方法
- Flex中对表格某列的值进行数字格式化并求百分比添加%
- C#中struct和class的区别详解
- asp格式化日期时间格式的代码
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 深入了解PHP类Class的概念
- Flex中对表格中某列的值进行数字格式化保留两位小数
- javascript 格式化时间日期函数代码脚本之家修正版
- setAttribute 与 class冲突解决
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析
- jQuery使用hide方法隐藏指定元素class样式用法实例
- jQuery给多个不同元素添加class样式的方法
- js对数字的格式化使用说明
- 关于mysql数据库格式化简单介绍
- Lua之字符串格式化例子和常用格式化参数介绍
- 再谈DOS批处理下格式化日期字符串的多种方法(详解)
- JavaScript更改class和id的方法
- 一篇入门的php Class 文章