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

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

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

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


当前回答

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

其他回答

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

使用Objective-C方式从C原语创建对象

CGRect rect = CGRectMake(1, 2, 3, 4);
CGSize size = CGSizeMake(1, 2);
NSLog(@"%@, %@",@(rect), @(size));

输出:NSRect: {{1,2}, {3,4}}, NSSize: {1,2}

有几个函数,比如:

NSStringFromCGPoint  
NSStringFromCGSize  
NSStringFromCGRect  
NSStringFromCGAffineTransform  
NSStringFromUIEdgeInsets

一个例子:

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

由于Stack Overflow的坏RSS刚刚为我复活了这个问题,这里是我的几乎通用的解决方案:JAValueToString

这允许您编写JA_DUMP(cgPoint)并记录cgPoint ={0,0}的日志。

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