iOS description
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的更多相关文章
- iOS ShareSDK 使用
流量精灵软件中,也在大部分地方使用到了shareSDK 这个三方开源库.具体的有两种需求 a.弹出所有分享模块 b.只弹出指定的平台:如微信朋友圈和QQ . 配置方法,三方库中也很详细,这里我只有写出 ...
- [转]About the security content of iOS 8
Source:http://support.apple.com/kb/HT6441 For the protection of our customers, Apple does not disclo ...
- React Native之code-push的热更新(ios android)
React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...
- zabbix使用介绍
zabbix自定义监控项 1.创建主机组,可以根据redis.mysql.web等创建对于的主机组 2.创建主机 3.创建Screens 4.自定义监控项 zabbix_agentd.conf配置文件 ...
- iOS出现<object returned empty description>的解决方法
iOS出现<object returned empty description>的解决方法: 使用 [str length] <= 0 判断处理
- 【Swift】ios开发中巧用 description 打印对象时,打印对象的属性
ios开发中我们打印对象的时候,会直接输出对象地址,这样不方便我们开发.我们可以 巧用 description 打印对象时,输出对象的属性 在oc中直接重写即可.swift中需要遵守Printable ...
- iOS NSNumber转化NSString之description
我们经常需要把一个数字转成字符串,当你不需要配合其他字符串的时候可以用description. /** description属于NSObject 值是NSNumber时候,不用stringWithF ...
- 李洪强iOS开发之【Objective-C】07-自定义构造方法和description方法
知识回顾 在前面已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h 1 #import <Foundation/Foundation.h> 2 3 ...
- 李洪强iOS开发之OC语言description方法和sel
OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象 ...
随机推荐
- Java开发者使用C++写程序踩的坑
笔者是一个很矛盾的人.平时用Java.但是一开始学习的时候学的是汇编语言,而且对C语言也很熟悉.为什么不学C++呢?是因为我可以完全用Java的编码规范去写C++.因此我不需要了解更多的诸如C++的命 ...
- mysql 设置不了短串密码怎么办 You must reset your password using ALTER USER statement before executing this statement.
centos7+ 安装 mysq 5.7 https://www.linuxidc.com/Linux/2016-09/135288.htm set global validate_password_ ...
- Play框架连接Mysql遇到的一些问题
最近,在基于Play框架的项目中需要连接Mysql数据库.在这个过程中遇到了一些问题.在此,把它记录下来. 首先,Play框架和Mysql连接有两种方式,这两种方式都是在application.con ...
- mac 安装opencv-python
Mac下安装opencv-python 项目中使用的是opencv 2的版本,因此下面说一下opencv2的一些安装流程. 安装方法 1:如果没有homebrew的话,需要先安装 安装命令: ruby ...
- C#开发ActiveX控件,.NET开发OCX控件案例 【转】
http://xiaochen.2003.4.blog.163.com/blog/static/480409672012530227678/ 讲下什么是ActiveX控件,到底有什么作用?在网页中又如 ...
- 学习笔记 Java类的封装、继承和多态 2014.7.10
1.问题:toString()没搞懂? int a = 1; Integer aa = new Integer(a); //这是实现的过程 System.out.println("Hello ...
- LINUX下目标文件的BSS段、数据段、代码段
http://blog.chinaunix.net/uid-27018250-id-3867588.html bss 未初始化的全局数据 data 已经初始化的全局数据 text 代码段,机器指令 r ...
- ActiveX控件打包成Cab置于网页中自动下载安装
[背景] http://www.360doc.com/content/13/1120/20/10159093_330853247.shtml 做过ActiveX控件的朋友都知道,要想把自己做的Acti ...
- python(18)- 协程函数及应用
协程 def init(func): def wrapper(*args,**kwargs): obj = func(*args,**kwargs) next(obj) return obj retu ...
- Matlab princomp函数浅析
matlab中的princomp函数主要是实现主成分分析的功能,有1一个输入参数,4个返回参数,形式如下: [coef, score, latent, t2] = princomp(X) 输入: X为 ...