zoukankan      html  css  js  c++  java
  • iOS开发-重写description方法,自定义控制台(log)信息

    description是所有类都有的一个方法。

    我们重写这个方法,可以自定义实例输出的信息。

    比如我们创建一个Person类:

    在.h文件中添加两个属性:

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    @property (strong, nonatomic) NSString *name;
    @property (assign, nonatomic) int age;
    
    @end

    在.m文件中重写description方法:

    #import "Person.h"
    
    @implementation Person
    
    - (NSString *)description
    {
        return [NSString stringWithFormat:@"<%p> - name: %@, age: %d", self, _name, _age];
    }
    
    @end

    我们调用一下:

    Person *person = [[Person alloc] init];
    person.name = @"XiaoMing";
    person.age = 28;
    NSLog(@"person - %@", person);

     这时控制台会输出:

    person - <0x7fa20bc18d10> - name: XiaoMing, age: 28

    这个是我description中自定义的输出方法。

    如果我们没有重写description方法,控制台输出的结果则为:

    person - <Person: 0x7fccd1e1c5f0>

    总结一下:

    也就是说当我们把该类的所有属性都输出至控制台时,我们可以重写description方法,方便我们能随时观察类的各个属性。

    PS: 没有重写description方法时,默认只会显示打印的类名和类的内存地址。


    博文作者:GarveyCalvin

    博文出处:http://www.cnblogs.com/GarveyCalvin/

    本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!

  • 相关阅读:
    ascii、unicode、utf-8、gbk 区别?
    python递归的最大层数?
    线程
    为何基于tcp协议的通信比基于udp协议的通信更可靠?
    什么是局域网和广域网?
    通过代码实现如下转换 ?
    TCP和UDP的区别?
    什么是ARP协议?
    PEP8 常用规范
    b、B、KB、MB、GB 的关系?
  • 原文地址:https://www.cnblogs.com/GarveyCalvin/p/4146732.html
Copyright © 2011-2022 走看看