美文网首页IOS开发基础(oc)
ios开发基础学习笔记(四)--description

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

作者: miloluo | 来源:发表于2018-05-09 10:59 被阅读0次

    前言

    大家好,我是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] <Person: 0x100620c50>
    所以我们只需要在子类的重写description方法就,让子类有一个重写的descripition方法就行了,示例如下:

    #import "JJPerson.h"
    @implementation JJPerson
    
    -(NSString *)description {
        return [NSString stringWithFormat:@"Age:%ld, Name:%@",(long)_age,_name];
    }
    
    @end
    

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

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


    截图.png

    成功~

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


    重写description类方法.png
    打印结果.png

    相关文章

      网友评论

        本文标题:ios开发基础学习笔记(四)--description

        本文链接:https://www.haomeiwen.com/subject/vpegrftx.html