description:重写对象的这个方法,会在打印的时候显示出自定义的description中的内容
debugDescription:方法是在开发者在调试器中以控制台命令打印对象时才调用的。 在NSObject类的默认实现中,NSLog打印是只是直接调用了description,debugDescription是通过命令来调用的,如:

现在有个SomeObject类,它重写了description和debugDescription方法:

@implementation SomeObject

- (NSString *)description
{
return [NSString stringWithFormat:@"%@", @{@"title":@"title_value",
@"name":@"name_value",
@"desc":@"desc_value"
}];
}

- (NSString *)debugDescription
{
return [NSString stringWithFormat:@"%@ %p", [self class], self];
}
@end

调用的时候
SomeObject *object = [[SomeObject alloc] init];
NSLog(@"object = %@", object);
//Breakpoint here,在这打断点

这个时候在控制台打印:
2017-11-08 10:29:44.878362+0800 FrameworkTest[2596:71158] object = {
desc = "desc_value";
name = "name_value";
title = "title_value";
}
(lldb)

通过LLDB的“po”命令可以完成对象的打印工作,输出如下:
2017-11-08 10:29:44.878362+0800 FrameworkTest[2596:71158] object = {
desc = "desc_value";
name = "name_value";
title = "title_value";
}
(lldb) po object
tobject = SomeObject 0x6040002056d0

通过po命令将debugDescription中的内容打印出来,这样做的好处是,你可能不想把类名和指针地址这种额外的信息放到普通的描述信息里,但是确希望调试的时候能方便的看到它们,这种情况下就可以使用这种输出方式来实现。Foundation框架中的NSArray就是这么做的:
如:
NSArray *array = @[@1, @2, @3];
NSLog(@"%@", array);
//在这打断点

运行代码输出:
2017-11-08 10:44:30.410018+0800 FrameworkTest[2703:87863] (
1,
2,
3
)
(lldb) po array
<__NSArrayI 0x60c000245550>(
1,
2,
3
)

要点:
1、实现descr方法返回一个有意义的字符串,用以描述该实例;
2、若想在调试时打印出更详尽的描述信息,则应该实现debugDescription方法。

iOS description的更多相关文章

  1. iOS ShareSDK 使用

    流量精灵软件中,也在大部分地方使用到了shareSDK 这个三方开源库.具体的有两种需求 a.弹出所有分享模块 b.只弹出指定的平台:如微信朋友圈和QQ . 配置方法,三方库中也很详细,这里我只有写出 ...

  2. [转]About the security content of iOS 8

    Source:http://support.apple.com/kb/HT6441 For the protection of our customers, Apple does not disclo ...

  3. React Native之code-push的热更新(ios android)

    React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...

  4. zabbix使用介绍

    zabbix自定义监控项 1.创建主机组,可以根据redis.mysql.web等创建对于的主机组 2.创建主机 3.创建Screens 4.自定义监控项 zabbix_agentd.conf配置文件 ...

  5. iOS出现<object returned empty description>的解决方法

    iOS出现<object returned empty description>的解决方法: 使用  [str length] <= 0  判断处理

  6. 【Swift】ios开发中巧用 description 打印对象时,打印对象的属性

    ios开发中我们打印对象的时候,会直接输出对象地址,这样不方便我们开发.我们可以 巧用 description 打印对象时,输出对象的属性 在oc中直接重写即可.swift中需要遵守Printable ...

  7. iOS NSNumber转化NSString之description

    我们经常需要把一个数字转成字符串,当你不需要配合其他字符串的时候可以用description. /** description属于NSObject 值是NSNumber时候,不用stringWithF ...

  8. 李洪强iOS开发之【Objective-C】07-自定义构造方法和description方法

    知识回顾 在前面已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h 1 #import <Foundation/Foundation.h> 2 3 ...

  9. 李洪强iOS开发之OC语言description方法和sel

    OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象 ...

随机推荐

  1. android学习资源

    https://codelabs.developers.google.com/ https://developer.android.com/ http://v.youku.com/v_show/id_ ...

  2. 转 Tesseract-OCR 字符识别---样本训练

    转自:http://blog.csdn.net/feihu521a/article/details/8433077 Tesseract是一个开源的OCR(Optical Character Recog ...

  3. Leetcode总结之Union Find

    package UnionFind; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; p ...

  4. eclipse主题下载网站

    http://eclipsecolorthemes.org/

  5. Nginx图片防盗链的方式

    原文:http://www.open-open.com/code/view/1430750263460 location ~* \.(gif|jpg|jpeg|png|ico)$ { valid_re ...

  6. 邁向IT專家成功之路的三十則鐵律 鐵律二十九 IT人富足之道-信仰

    天地自然的循環法則,讓每一個人都必須經歷生.老.病.死.喜.怒.哀.樂,然而至始至終無盡的煩惱總是遠多於快樂,因此筆者深信每一個人在一生當中,都必須要有適合自己的正確信仰,他可以在你無法以物質力量來解 ...

  7. 【原创】关于jquery实现格式化时间

    //js格式化时间,参数jsonDate可以是后台数据 function jsonDateFormat(jsonDate) { try { var date = new Date(parseInt(j ...

  8. iOS -- SKPhysicsWorld类

    SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit. ...

  9. Linux进程调度(3):进程切换分析

     3.调度函数schedule()分析 当kernel/sched.c:sched_tick()执行完,并且时钟中断返回时,就会调用kernel/sched.c:schedule()完成进程切换.我们 ...

  10. POJ2503字典树

    此代码原始出处:http://blog.csdn.net/cnyali/article/details/47367403 #include<stdio.h> #include<str ...