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(对象 ...
随机推荐
- Xamarin XAML语言教程基础语法篇大学霸
Xamarin XAML语言教程基础语法篇大学霸 前 言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...
- 再次了解android中屏幕尺寸,单位等
android设备多种多样,要让你的app能够适配所有的屏幕是一件很痛苦的事情,在做适配之前我们首先需要了解android中dimension的定义 android中dimension是如何定义的? ...
- 开源BT磁力搜索引擎收集
基本是利用bt网络中p2p技术实现,开源项目上实现了dht网络的搜索.是学习dht算法的好项目. https://lanmaowz.com/open-dht-spider/ https://githu ...
- Android 自定义ListView Item侧滑删除
本程序是基于网上开源项目修改而来,具体来源忘了,懒得搜了,如果有不合适的地方,请原作者联系我,我会及时回复和处理的! 该例子程序中主要包含两个ListView,一个是实现侧滑删除,一个是侧滑出菜单,代 ...
- 【hibernate】唯一约束 注解
唯一约束注解 单列约束和联合约束 分别如下 @Table( uniqueConstraints = { @UniqueConstraint(columnNames = "uid") ...
- 深入理解Activity启动流程(三)–Activity启动的详细流程2
本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--A ...
- python 常见细节知识点
1. a[::-1]翻转 设有一个元组或者列表 a = (1,2,3,4) b = [1,2,3,4] 则a[::-1]和b[::-1]的含义是将元组或列表的内容翻转 a[::-1] # 结果为(4, ...
- ubuntu下调试ffmpeg程序出现undefined reference to pthread_once ,undefined reference to uncompress错误
Ubuntu(版本16.04)下默认配置编译Ffmpeg(版本4.1.3configure 添加选项--enable-threads),将编译好的ffmpeg库添加到程序 中进行编译出现undefin ...
- mysql创建还原点
set autocommit = 0; insert into t1(name) values ("user1"); savepoint p1; insert into t ...
- Django知识梳理
请求周期: url > 路由 > 函数或类 > 返回字符串或模板语言 Form 表单提交: 先处理模板语言再讲HTML发出去 提交 > url > 函数或类中的方法 — ...