前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口与API设计--17:description方法

接口与API设计--17:description方法

作者头像
xy_ss
发布2023-11-22 08:22:22
1110
发布2023-11-22 08:22:22
举报
文章被收录于专栏:浮躁的喧嚣

describe

代码语言:javascript
复制
 Phone *p = [[Phone alloc]initWithName:@"iPhone" withPrice:999];
 NSLog(@"%@",p);

一般我们答应出来的内容 <Phone: 0x60400022dd00> 为了方便调试打印更多信息,我们需要在Phone类中重写describe方法

代码语言:javascript
复制
- (NSString *)description
{
    return [NSString stringWithFormat:@"<%@:%p \"%@\">", [self class],self,
            @{@"_name":_name,
              @"_price":@(_price)
              }];
}

Phone *p = [[Phone alloc]initWithName:@"iPhone" withPrice:999];
NSLog(@"%@",p);

这样我们得到的信息会很详细,打印信息为:<Phone:0x600000238ae0 "{ "_name" = iPhone; "_price" = 999; }">

debugDescribe

debugDescribe方法主要是开发者在调试器中以控制台命令"po"打出对象时才调用,在debugDescribe方法里可以添加你认为调试必要的一些内容

在此处打断点,这时通过控制台可以打印出:

demo

没有重写debugDescription

当你重写debugDescribe方法

代码语言:javascript
复制
- (NSString *)debugDescription
{
    return [NSString stringWithFormat:@"<%@: %p> %@", [self class], self,
                @{@"_name":_name,
                  @"_price":@(_price),
                  @"more info":@"XXXXX"
                  }];
}

在控制台打印的信息为

重写debugDescription

参考

Effective+Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • describe
  • debugDescribe
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档