打印NSLog分类 Foundation+Log.m

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

@implementation UIView(Log)

+ (NSString *)searchAllSubviews:(UIView *)superview

{

NSMutableString *xml = [NSMutableString
string];

NSString *class =
NSStringFromClass(superview.class);

class = [class stringByReplacingOccurrencesOfString:@"_"
withString:@""];

[xml
appendFormat:@"<%@ frame=\"%@\">\n", class,
NSStringFromCGRect(superview.frame)];

for (UIView *childView
in superview.subviews) {

NSString *subviewXml = [self
searchAllSubviews:childView];

[xml
appendString:subviewXml];

}

[xml
appendFormat:@"</%@>\n", class];

return xml;

}

- (NSString *)description

{

return [UIView
searchAllSubviews:self];

}

@end

@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];

if (range.length) {

//
删掉最后一个,

[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];

if (range.length) {

//
删掉最后一个,

[str deleteCharactersInRange:range];

}

return str;

}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 12:57:13

打印NSLog分类 Foundation+Log.m的相关文章

VUE项目如何在移动端查看打印日志(console.log)

在项目中发现,由于移动端无法看到打印的信息,所以很难进行调试,也不知道问题出在哪里,后来找到了一个好用的插件:vConsole. 1.安装 npm install vconsole 2.在main.js中引入 import Vconsole from 'vconsole'; let vConsole = new Vconsole(); export default vConsole 编译你的vue项目,用移动端打开项目就可以看到绿色的vconsole图标 vconsole图标 点开这个图标,就能

genymotion在后台总是打印这个错误的log 有大神知道怎么解决吗

后台不停的打印这个错误 实在是没什么办法啊 网上有人说下载个Genymotion-ARM-Translation_v1.1.zip 然后拖拽到虚拟机里安装就行 但是本人亲测木有效果啊 有没有大神指点一下? 后台不停的打印这个错误 实在是没什么办法啊 网上有人说下载个Genymotion-ARM-Translation_v1.1.zip 然后拖拽到虚拟机里安装就行 但是本人亲测木有效果啊 有没有大神指点一下? 后台不停的打印这个错误 实在是没什么办法啊 网上有人说下载个Genymotion-ARM

NSLog设置不打印

在调试应用程序的时候经常需要进行打印需要的信息,但是当打印的地方多了之后在真机上跑应用程序就会相应的慢很多,输出语句多了之后会在很大程序上影响应用程序的性能.这里我们可以定义一个宏来控制是否输出调试信息. 在Release模式下禁止输出调试信息 因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还

NSLog打印信息的从新设置

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能,针对这种问题可以写一些宏来控制这些调试信息的输出. 在release版本禁止输出NSLog内容 因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注

NSLog不打印设置

在release版本禁止输出NSLog内容 因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉. 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了. 如何实现: 在-Prefix.pch(pch全称是“p

封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------------------------------------------------------------------------------ 不知众多Android开发者是否在程序开发的工程中也遇到过下面的问题: 0.如何在众多log中快速找到你设置打印的那行log? 1.是否还在不断的切换标签来

js console.log 打印 对像 数组 详解

console.log是什么东西,其实就是一个打印js数组和对像的函数而已,就像是php的print_r,var_dump.console.log这个函数本身没什么好说的,这篇博客告诉大家怎么去用这个函数.在说这个函数之前,我想大家用的最多查看js输出,是alert吧,但是alert,只能弹string或者是int的 一,测试文件test.html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <me

去除console.log()打印语句

打印语句:console.log() ,一句话描述它! “用的时候感觉贼爽,不用的时候脑袋痛吧?” 以下提供两种解决方案: 一. webpack打包时去除,适合Vue项目 二. vscode正则匹配,手动去除 1. 拖放整个项目文件夹到vscode 2. 选中文件夹,然后编辑->在文件中替换 1. console.log()加了分号 console\.log\(.*?\); 2. console.log()没加分号 console\.log\(.*?\) 准备出一篇简单易懂的正则. 原文地址:h

pch文件中自定义log

1 // __OBJC__这个宏,在所有的.m和.mm文件中默认就定义了这个宏 2 #ifdef __OBJC__ 3 4 // 如果这个全局的头文件或者宏只需要在.m或者.mm文件中使用, 5 // 请把该头文件或宏写到#ifdef __OBJC__ 中 6 7 #import <UIKit/UIKit.h> 8 #import <Foundation/Foundation.h> 9 10 11 #ifdef DEBUG 12 #define NJLog(...) NSLog(_