ios – 使用NSLog的奇怪行为

ios – 使用NSLog的奇怪行为,第1张

概述我正在使用NSLog检查一个UITextView.我的代码中有以下日志记录: NSLog(@"textView: %@",textView); NSLog(@"textView.frame: %@",textView.frame); NSLog(@"[textView frame]: %@",[textView frame]); 在控制台的输出中,我得到以下内容: 2010-11- 我正在使用NSLog检查一个UITextVIEw.我的代码中有以下日志记录:
NSLog(@"textVIEw: %@",textVIEw);    NSLog(@"textVIEw.frame: %@",textVIEw.frame);    NSLog(@"[textVIEw frame]: %@",[textVIEw frame]);

在控制台的输出中,我得到以下内容:

2010-11-29 22:00:38.252 MenuMaker[57602:207] textVIEw: <UITextVIEw: 0x3b3afe0; frame = (0 0; 320 387); text = 'blah...'; clipsToBounds = YES; autoresize = RM+BM; layer = <CALayer: 0x3b3afa0>>2010-11-29 22:00:38.254 MenuMaker[57602:207] textVIEw.frame: (null)2010-11-29 22:00:38.254 MenuMaker[57602:207] [textVIEw frame]: (null)

第一行输出,因为它包含’frame =(0 0; 320 387)’位,导致我相信UITextVIEw的框架变量都是设置的.但为什么在这种情况下接下来的两行显示为空?他们不应该转储框架的值吗?

提前致谢

解决方法 正如其他人所指出的,CGRect只是一个结构,因此缺少一种描述方法(这是Nsstring的stringWithFormat静态方法 – NSLog使用的格式字符串替换%@).因此,您不能直接将其传递给NSLog.

但是,不需要像建议一样输出任何值. Cocoa提供了许多内置的方法,将多个Core Graphics结构渲染为一个字符串:

NsstringFromCGRect()NsstringFromCGPoint()NsstringFromCGSize()NsstringFromCGAffinetransform()

等等.因此,以字符串的形式输出CGRect变得非常容易:

NSLog(@"%@",NsstringFromCGRect(rect));

您可以在“字符串转换”下找到所有这些帮助方法here.

总结

以上是内存溢出为你收集整理的ios – 使用NSLog的奇怪行为全部内容,希望文章能够帮你解决ios – 使用NSLog的奇怪行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存