标签:
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的短板——但前辈是大家得有足够的时间和精力投入其中。下面来看这两款个人推荐:
C:使用第三方插件快速打印对象
使用第三方插件快速打印也是很不错的方案
不用重写Drscription,直接打印对象,打印frame size 等等,觉得是一个不错的调试打印工具
https://github.com/DeveloperLx/LxDBAnything
iOS调试技巧之打印输出 -----A: (NSString *)description B:自定义LOG C:使用第三方插件快速打印
标签:
原文地址:http://www.cnblogs.com/ios-wang/p/4944953.html