iOS description方法的使用介绍
在输出字符串、一些基本数据类型以及 OC 对象,我们都可以使用 NSLog 函数进行输出。本次主要谈谈使用NSLog输出 OC 对象的应用。
一般情况下,我们在使用NSLog 和 %@ 输出某个对象时,就会调用这个对象的 description 方法,它的返回值就是 NSString 字符串类型,所以 description 默认实现返回的格式是 <类名: 对象的内存地址>,如图:
以上输出实现的具体步骤为:
1.调用对象p的-description方法
2.拿到-description方法的返回值(NSString*)显示到屏幕上
3.-description方法默认返回的是“类名+内存地址”
那么,既然description方法的默认实现是返回类名和对象的内存地址,所以在必要情况下,我们需要重写description方法以达到改变输出结果目的,覆盖description方法的默认实现,比如重写上述代码 Person 类的 description方法,返回_age和_name成员变量的值:
重写完description方法后,再调用NSLog(@”%@”,p)时输出结果不再是<类名: 内存地址>,而是返回的字符串:
另外一个重点:千万不要在 description 方法中同时使用 %@ 和 self,如果这样使用了,那么最终会造成程序死循环,原因是因为:如果使用了%@和self,代表要调用self的description方法,最终就是循环调用description方法,所以以下是错误的写法,不可取:
转载自:http://blog.csdn.net/yuner1029/article/details/50933945
iOS description方法的使用介绍相关推荐
- iOS 高效开发-----实现description 方法 (续)
在 "iOS 高效开发-----实现description 方法"这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescr ...
- IOS中的swift和oc关于对象模型的description方法重写
IOS中的swift和oc关于对象模型的description方法重写 先讲OC的,oc比较重要,放在最前面. 首先创建一个cocoa Touch Class,继承NSObject, 命名Person ...
- IOS开发基础Object-C( 04)—构造方法和description方法
在上一篇博客中,我们简单介绍了一下点语法和self,相信大家对点语法以及self有了一点的了解,点语法的本质就是调用get方法和set方法.那么今天我们再来介绍一下构造方法和description. ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- iOS流媒体直播整个框架介绍(HLS、RTSP)
iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...
- jquery 字符串查找_Python Appium 库IOS特有元素查找API介绍
IOS自动化测试系列文章: 一文带你趟过mac搭建appium测试环境的遇到的坑 appium 实现简易IOS app自动化测试demo 今天分享的是python appium库中IOS元素查找特定 ...
- 思科IOS软件命名规则简单介绍:
思科IOS软件命名规则简单介绍: AAAAA-BBBB-CC-DDDD.EE 1. AAAAA 这组字符是说明文件所适用的硬件平台, 2. BBBB 这组字符是说明这个IOS中所 ...
- CISCO路由器IOS升级方法
前不久,朋友在对一台带语音模快的CISCO2610进行IOS升级时,由于路由器的内存(flash)为8M,IOS软件为7M多,升级后路由器无法正常启动.启动后到rommon 1 >状态,请求帮助 ...
- Cisco路由器IOS升级方法总结
Cisco路由器IOS升级方法总结 笔者长期从事计算机网络管理工作,在对CISCO路由器的长期日常维护和管理实践中积累了一定的经验.现总结归纳出CISCO路由器 IOS 映像升级的几种方法,供广大网络 ...
最新文章
- 学习C#要养成的好习惯
- spring boot--最基础的hello world
- Nature子刊:Salmon不比对快速宏基因组基因定量
- 遗传算法(GA)中的编码方式-二进制编码、格雷编码、实数编码
- 交换二维数组元素c语言,二维数组中元素替换问题!
- 分布式框架seata启动命令
- SpringBoot异常处理-SimpleMappingExceptionResolver
- 12个月大厂主机免费领AWS Azure Google-Cloud还不快到碗里来
- 浏览器的headers
- mysql存储过程触发器_MySQL存储过程及触发器
- 常用类 (七) ----- 包装类
- 数据库修改服务器ip地址吗,服务器数据库与改ip地址吗
- Hawk 浩客 K950 3.0 免开机互拷易驱线 新产品 新科技
- Python细节面试题--小整数对象池和大整数对象池
- [Django学习] Django基础(8)_富文本编辑器
- Jetpack—LiveData组件的缺陷以及应对策略
- 分布式任务调度平台XXL-JOB
- 判断当前Windows XP操作系统是32位还是64位的方法
- css设置透明背景,背景色透明度
- 【北邮国院大三上】大三上高编/互联网协议/电信系统笔记