博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<iOS>关于自定义description的一点用法
阅读量:4112 次
发布时间:2019-05-25

本文共 607 字,大约阅读时间需要 2 分钟。

今天在写一段代码时, 自定义了一个UIView, 并且修改了其description 显示, 

修改如下:

- (NSString *)description {

    NSLog(@"XXXX");

    NSString *selfDes = [NSString stringWithFormat:@"self=%@, yourAge=%d", self, self.yourAge];

    return selfDes;

}

运行时, 发现, 在使用NSLog这个自定义的UIView对象时, 发现程序崩溃,而且提示也比较莫名其妙,错误信息如下:

0x1c03b9c:  calll  0x1c03ba1                 ; __CFStringAppendFormatCore + 17

然后在左边的调试栈中,发现有大量的调用[SIniView description];  于是便推测,可以这个方法被多次调用, 然后才想到加入一免NSLog(@"xxxx");

运行发现在崩溃前, xxxx被反复地调用并显示出来。

后来,分析问题的原因,在于自定义description时,不能在里面还去调用self的转换成NSString的输出。因为在description中再去取self=%@,会使得里面又会调用自己的description方法。 所以形成了无效循环, 直到系统资源耗尽。

但是在description中,输入自己的其它对象,则是可以的。

转载地址:http://xrwpi.baihongyu.com/

你可能感兴趣的文章
【每日一练】原生js仿淘宝主图放大镜功能,附学习源码
查看>>
你应了解的4种JS设计模式
查看>>
浅析Typescript设计模式
查看>>
【JavaScript 教程】事件——进度事件
查看>>
30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
查看>>
推荐几个清华、中科院博士的超牛公众号
查看>>
7个有用的Vue开发技巧
查看>>
如何准备 BAT 的技术面试,面试有哪些套路?
查看>>
“我毕业3年月入8万”:不是你不会赚钱,而是你赚钱的方式有问题
查看>>
一文搞懂 Webpack 多入口配置
查看>>
冲冠一怒为代码:论程序员与负能量
查看>>
【JavaScript 教程】事件——触摸事件
查看>>
一步步教你使用rem适配不同屏幕的移动设备
查看>>
你了解vue3.0响应式数据怎么实现吗?
查看>>
送40本高质量Python、Java、前端书籍
查看>>
滴滴小程序框架Mpx2.0
查看>>
裸辞4个月,面试了30家公司,终于找到了理想的工作,同时也刷了1万字的经验给你...
查看>>
【JavaScript 教程】事件——拖拉事件
查看>>
2019年,前端Vue面试都问什么?
查看>>
2019年github上的18个热门项目
查看>>