带有 CGPoint 数据的 NSLog
Posted
技术标签:
【中文标题】带有 CGPoint 数据的 NSLog【英文标题】:NSLog with CGPoint data 【发布时间】:2010-12-01 09:12:01 【问题描述】:我有一个名为 point 的 CGPoint,它被分配了一个触摸:
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
我想在控制台日志中获取 x 坐标值:
NSLog(@"x: %s", point.x);
当我使用它时,它的日志输出是:
x: (null)
当使用调试器和变量 watch 调用它时,我已验证该点不为空。
任何帮助表示赞赏,
谢谢 // :)
【问题讨论】:
【参考方案1】:实际上,记录CGPoint
最简单的方法是:
NSLog(@"%@", NSStringFromCGPoint(point));
桌面 Cocoa 等价物是 NSStringFromPoint()
。
【讨论】:
这样更好。第一个答案是最简单和最轻的方法。但这让我在一组中从 CGPoint 得到 x 和 y。不错 :) 很棒的工具 :) 由于 *** 认为适合在我的 RSS 提要中重新引入这个问题,我不妨把我的一般解决方案拉到皮条上:jens.ayton.se/blag/almost-elegant-cave-man-debugging 它允许您转到JA_DUMP(point);
并获得“point = 43, 96 ”记录,而不必担心格式代码。
我如何使用你的库,因为它在 I386 上编译而不是在 ARM 上?我的意思是,我如何使用它来处理 ios 项目?
首先,您需要将 FindAlignment.c 文件构建为 iOS 应用程序并在设备(而非模拟器)上运行。然后,将结果复制到 JAValueToString.m 中第 172 行 #else 之前的新 #elif 块中。如果这不起作用,则需要进行额外的调试。由于我不在 iOS 程序中,所以我做不到。
另外值得注意的是 NSStringFromCGRect() 也存在。【参考方案2】:
point.x 是一个浮点数,所以你应该使用:
NSLog(@"x: %f", point.x);
【讨论】:
【参考方案3】:记录CGPoint
值的最简单方法是使用NSValue
类,因为它会为您提供所有适合控制台格式的相关值。这样做是这样的:
NSLog(@"myPoint = %@", [NSValue valueWithCGPoint:myPoint]);
当您尝试记录 frame
(CGRect
) 或 size
(CGSize
) 的属性时,还可以使用 NSValue
的 +valueWithCGRect
和 +valueWithCGSize
方法UIView
。
【讨论】:
【参考方案4】:NSLog(@"point x,y: %f,%f", point.x, point.y);
【讨论】:
【参考方案5】:point.x
是一个浮点数
所以你应该这样编码:
NSLog(@"%@",[NSString StringWithFormat:@"%f",point.x]);
【讨论】:
如果你想字符串值意味着你就用这个!! 您在格式字符串中执行了不必要的格式字符串。 Philippe 和 Ahruman 的方法要简单得多,而且结果完全相同。【参考方案6】:使用:
NSLog(@"%@", NSStringFromCGPoint(point));
您还可以使用 NSString 获取以下信息:
NSStringFromCGPoint NSStringFromCGSize NSStringFromCGRect NSStringFromCGAffineTransform NSStringFromUIEdgeInsets
【讨论】:
以上是关于带有 CGPoint 数据的 NSLog的主要内容,如果未能解决你的问题,请参考以下文章