在输出字符串、一些基本数据类型以及 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方法的使用介绍相关推荐

  1. iOS 高效开发-----实现description 方法 (续)

    在 "iOS 高效开发-----实现description 方法"这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescr ...

  2. IOS中的swift和oc关于对象模型的description方法重写

    IOS中的swift和oc关于对象模型的description方法重写 先讲OC的,oc比较重要,放在最前面. 首先创建一个cocoa Touch Class,继承NSObject, 命名Person ...

  3. IOS开发基础Object-C( 04)—构造方法和description方法

    在上一篇博客中,我们简单介绍了一下点语法和self,相信大家对点语法以及self有了一点的了解,点语法的本质就是调用get方法和set方法.那么今天我们再来介绍一下构造方法和description. ...

  4. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  5. iOS流媒体直播整个框架介绍(HLS、RTSP)

    iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...

  6. jquery 字符串查找_Python Appium 库IOS特有元素查找API介绍

    IOS自动化测试系列文章: 一文带你趟过mac搭建appium测试环境的遇到的坑 appium 实现简易IOS  app自动化测试demo 今天分享的是python appium库中IOS元素查找特定 ...

  7. 思科IOS软件命名规则简单介绍:

    思科IOS软件命名规则简单介绍: AAAAA-BBBB-CC-DDDD.EE 1.  AAAAA    这组字符是说明文件所适用的硬件平台, 2.  BBBB       这组字符是说明这个IOS中所 ...

  8. CISCO路由器IOS升级方法

    前不久,朋友在对一台带语音模快的CISCO2610进行IOS升级时,由于路由器的内存(flash)为8M,IOS软件为7M多,升级后路由器无法正常启动.启动后到rommon 1 >状态,请求帮助 ...

  9. Cisco路由器IOS升级方法总结

    Cisco路由器IOS升级方法总结 笔者长期从事计算机网络管理工作,在对CISCO路由器的长期日常维护和管理实践中积累了一定的经验.现总结归纳出CISCO路由器 IOS 映像升级的几种方法,供广大网络 ...

最新文章

  1. 学习C#要养成的好习惯
  2. spring boot--最基础的hello world
  3. Nature子刊:Salmon不比对快速宏基因组基因定量
  4. 遗传算法(GA)中的编码方式-二进制编码、格雷编码、实数编码
  5. 交换二维数组元素c语言,二维数组中元素替换问题!
  6. 分布式框架seata启动命令
  7. SpringBoot异常处理-SimpleMappingExceptionResolver
  8. 12个月大厂主机免费领AWS Azure Google-Cloud还不快到碗里来
  9. 浏览器的headers
  10. mysql存储过程触发器_MySQL存储过程及触发器
  11. 常用类 (七) ----- 包装类
  12. 数据库修改服务器ip地址吗,服务器数据库与改ip地址吗
  13. Hawk 浩客 K950 3.0 免开机互拷易驱线 新产品 新科技
  14. Python细节面试题--小整数对象池和大整数对象池
  15. [Django学习] Django基础(8)_富文本编辑器
  16. Jetpack—LiveData组件的缺陷以及应对策略
  17. 分布式任务调度平台XXL-JOB
  18. 判断当前Windows XP操作系统是32位还是64位的方法
  19. css设置透明背景,背景色透明度
  20. 【北邮国院大三上】大三上高编/互联网协议/电信系统笔记

热门文章

  1. 会议论文与期刊论文的写作差异
  2. (1)Artemis简介
  3. python对象模型_python 实现对象模型
  4. notify()和 notifyAll()有什么区别
  5. Vue之SetTimeout
  6. C#如何立即回收内存
  7. “海盗湾”副本网站上线:IPFS分布式技术搭建
  8. 2017年山东省机器人比赛 双足竟步 arduino源代码(删去了关键步态程序 gongneng1 和 gongneng2)
  9. ICMP协议之ping实现
  10. Java8--20道关于Stream流的题目练习