iOS调试技巧之打印输出 -----A: (NSString *)description B:自定义LOG C:使用第三方插件快速打印...

A:重写- (NSString *)description函数

如果有一个Product 产品对象 

Product.h中

 1 #import <Foundation/Foundation.h>
 2 
 3 typedef enum : NSUInteger {  4 RED = 1,  5  GREEN,  6 } ProductColor;  7  8 @interface Product : NSObject  9 10 @property (nonatomic, assign) ProductColor color; 11 @property (nonatomic, assign) float weight; 12 13 @end

 Product.m中

 

#import "Product.h"

@implementation Product //重写description方法 -(NSString *)description { return [NSString stringWithFormat:@"%@, %@",@(_color), @(_weight)]; } @end

 

 

结果比较

    Product *product = [[Product alloc] init];
    product.color = 1;
    product.weight = 120;
    
    // 重写description打印输出对象的属性值 NSLog(@"重写description打印输出%@",product); // 2015-11-07 13:27:25.956 WriteLeanPrograms[650:138469] 重写description打印输出1, 120 // 不重写description打印输出对象的指针 NSLog(@"不重写description打印输出%@",product); //2015-11-07 13:28:20.035 WriteLeanPrograms[654:138882] 不重写description打印输出<Product: 0x13f529ff0>

 

 其实就是一句话:重写description输出对象的属性值  不重写decription方法输出的时对象的指针地址

 

 

 

B:自定义LOG

在程序调试

任 何由NSLog输出的内容都会成为成品代码的一部分,也就是说会被任何接触到应用的人看到。只要把设备接入信息管理工具,每个人都能查看控制台信息并查 询每一条日志记录。没错,这必然会引发一系列严重后果。试想一下,如果我们曾经向控制台输出过机密逻辑算法或者者用户密码,这些信息一旦被他人获得将带来 恶劣影响。有鉴于此,苹果公司会在App Store的审核流程中检测控制台信息。一旦发现其中包含太多输出结果,应用程序将被直接打回开发者处进行调整 ,使用自定义的LOG在发布的时候自动取消打印,只在调试的时候打印信息,还可以看出打印结果属于哪一个文件的哪一个函数,哪一行是不是很方便发布app版本的时候就不会打印了,提高了性能 发布的时候不需要去设置debug =0,xcode 使用发布证书打包时自动设置debug = 0,

这段代码

#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)

NSLog的高级解决方案

虽然NSLog表现卓越,但其局限性也不可忽视:它只能向本地输出结果;

  • 我们无法为其添加日志“等级”(例如严重、警告等等);
  • NSLog速度很慢。在进行大量处理时它会严重拖慢应用程序的运行效果。

对于想给自己来点挑战的开发者来说,还有两款框架能够回避NSLog的短板——但前辈是大家得有足够的时间和精力投入其中。下面来看这两款个人推荐:

Cocoa LumberJack

  •  –一款专为Cocoa打造的知名通用型日志框架,学习起来略困难但功能非常强大。
  • SNLog –NSLog的替换方案之一。

 

C:使用第三方插件快速打印对象

使用第三方插件快速打印也是很不错的方案

不用重写Drscription,直接打印对象,打印frame size  等等,觉得是一个不错的调试打印工具

https://github.com/DeveloperLx/LxDBAnything 

 

 

转载于:https://www.cnblogs.com/ios-wang/p/4944953.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值