ios开发基础学习笔记(四)--description

前言

大家好,我是milo,这篇文章讲的是description,oc中一个较少用到,但比较好用的东西。

背景

在开发中进行调试时,如果我们想通过NSLog输出一个类的成员的信息,往往使用如下:

NSLog(@"Age:%d, Name:%@", [person age], [person name]); 

但是这样做毕竟不方便,每次要格式化输出类的所有信息时,都要重复写一遍上面的格式化代码。最好的方法就是,我们重写类的description方法。为什么要重写description方法呢?因为重写过后我们就可以像下面这样子使用,打印想要的信息。
NSLog(@"%@",person);
只需要一段代码就可以像上面那段代码一样输出想要的信息,所以十分地简洁。当调试的地方比较多的时候就更加能体现其优越性。

如何实现

当我们像 NSLog(@"%@",person); 这样去打印一个对象的信息的时候,对象会寻找自身的description方法,当子类没有重写description的时候就会在父类NSObject中寻找,而NSObject中默认description方法是打印如下信息:
2018-05-08 23:45:00.936964+0800 oc练习[1709:152079]
所以我们只需要在子类的重写description方法就,让子类有一个重写的descripition方法就行了,示例如下:

#import "JJPerson.h"
@implementation JJPerson

-(NSString *)description {
    return [NSString stringWithFormat:@"Age:%ld, Name:%@",(long)_age,_name];
}

@end

是不是非常简单~只需要将需要格式化输出的信息,封装到description的内部,就可以了。

接下来看看是不是做到了一行代码NSLog(@"%@",person); 就能打印description里面格式化后信息。


ios开发基础学习笔记(四)--description_第1张图片
截图.png

成功~

-----------------------------分割一下-----------------------------
description方法不仅仅只有对象方法,他还有类方法,也就是我们可以采取像上面一样的思路,一句代码打印所需要的类的信息,只不过打印的时候是 NSLog(@"%@",[JJPerson description]); 大家可以自己去尝试尝试,下面上个图。


ios开发基础学习笔记(四)--description_第2张图片
重写description类方法.png

ios开发基础学习笔记(四)--description_第3张图片
打印结果.png

你可能感兴趣的:(ios开发基础学习笔记(四)--description)