我希望能够调试C结构,而不必显式地键入它们所包含的每个属性。

例如,我希望能够做这样的事情:

CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);

显然'%@'不起作用,因此出现了这个问题。


当前回答

你可以试试这个:

NSLog(@"%@", NSStringFromCGPoint(cgPoint));

UIKit提供了许多函数,可以将各种CG结构转换为nsstring。它不起作用的原因是%@表示一个对象。CGPoint是一个C结构体(CGRects和CGSizes也是)。

其他回答

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

有几个函数,比如:

NSStringFromCGPoint  
NSStringFromCGSize  
NSStringFromCGRect  
NSStringFromCGAffineTransform  
NSStringFromUIEdgeInsets

一个例子:

NSLog(@"rect1: %@", NSStringFromCGRect(rect1));

你可以为此使用NSValue。NSValue对象是单个C或Objective-C数据项的简单容器。它可以保存任何标量类型,如int、float和char,以及指针、结构和对象id。

例子:

  CGPoint cgPoint = CGPointMake(10,30);
    NSLog(@"%@",[NSValue valueWithCGPoint:cgPoint]);

输出:NSPoint: {10,30}

希望对你有所帮助。

你可以试试这个:

NSLog(@"%@", NSStringFromCGPoint(cgPoint));

UIKit提供了许多函数,可以将各种CG结构转换为nsstring。它不起作用的原因是%@表示一个对象。CGPoint是一个C结构体(CGRects和CGSizes也是)。

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