maz*_*iak 410 c cocoa cocoa-touch objective-c
我希望能够调试C结构,而无需显式键入它们所包含的每个属性.
即我希望能够做这样的事情:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
Run Code Online (Sandbox Code Playgroud)
显然'%@'不起作用,因此问题.
Ale*_*lex 801
你可以试试这个:
NSLog(@"%@", NSStringFromCGPoint(cgPoint));
Run Code Online (Sandbox Code Playgroud)
UIKit提供了许多功能,可以将各种CG结构转换为NSString
s.它不起作用的原因是因为%@
表示一个对象.A CGPoint
是C结构(CGRect
s和CGSize
s 也是如此).
小智 230
有一些功能,如:
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
Run Code Online (Sandbox Code Playgroud)
一个例子:
NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
Run Code Online (Sandbox Code Playgroud)
Abh*_*edi 17
NSLog(@"%@", CGRectCreateDictionaryRepresentation(rect));
Run Code Online (Sandbox Code Playgroud)
e.J*_*mes 13
我使用以下宏来帮助我使用NSRect:
#define LogRect(RECT) NSLog(@"%s: (%0.0f, %0.0f) %0.0f x %0.0f",
#RECT, RECT.origin.x, RECT.origin.y, RECT.size.width, RECT.size.height)
Run Code Online (Sandbox Code Playgroud)
您可以为CGPoint做类似的事情:
@define LogCGPoint(POINT) NSLog(@"%s: (%0.0f, %0.0f)",
#POINT POINT.x, POINT.y);
Run Code Online (Sandbox Code Playgroud)
使用方法如下:
LogCGPoint(cgPoint);
Run Code Online (Sandbox Code Playgroud)
会产生以下结果:
cgPoint: (100, 200)
Run Code Online (Sandbox Code Playgroud)
你可以用NSValue
它.一个NSValue对象为单C或Objective-C的数据项的简单容器.它可以包含任何标量类型,如int,float和char,以及指针,结构和对象id.
例:
CGPoint cgPoint = CGPointMake(10,30);
NSLog(@"%@",[NSValue valueWithCGPoint:cgPoint]);
Run Code Online (Sandbox Code Playgroud)
输出: NSPoint: {10, 30}
希望它能帮到你.
是的,您可以使用以下几个函数:首先您必须将CGPoint结构转换为字符串,请参阅示例
1) NSStringFromCGPoint,
2) NSStringFromCGSize,
3) NSStringFromCGRect,
4) NSStringFromCGAffineTransform,
5) NSStringFromUIEdgeInsets,
Run Code Online (Sandbox Code Playgroud)
例如:
1) NSLog(@"NSStringFromCGPoint = %@", NSStringFromCGRect(cgPointValue));
Run Code Online (Sandbox Code Playgroud)
像这样...
由于Stack Overflow的破解RSS刚刚为我重新提出了这个问题,这里是我几乎一般的解决方案:JAValueToString
这使您可以编写JA_DUMP(cgPoint)
并cgPoint = {0, 0}
记录.
归档时间: |
|
查看次数: |
103719 次 |
最近记录: |