代码之家  ›  专栏  ›  技术社区  ›  mazniak

是否可以记录C结构(如CGRect或CGPoint)?

  •  402
  • mazniak  · 技术社区  · 17 年前

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

    i、 e.我希望能够做到以下几点:

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

    很明显,“@”不起作用,因此出现了这个问题。

    8 回复  |  直到 17 年前
        1
  •  806
  •   jscs    15 年前

    您可以尝试以下方法:

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

    有许多功能 provided by UIKit NSString s它不起作用的原因是 %@ 表示一个对象。A. CGPoint 是C结构(我们也是 CGRect s和 CGSize s) 。

        2
  •  235
  •   marzapower Vijay-Apple-Dev.blogspot.com    15 年前

    NSStringFromCGPoint  
    NSStringFromCGSize  
    NSStringFromCGRect  
    NSStringFromCGAffineTransform  
    NSStringFromUIEdgeInsets
    

    例如:

    NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
    
        3
  •  18
  •   Abhishek Bedi    13 年前
    NSLog(@"%@", CGRectCreateDictionaryRepresentation(rect));
    
        4
  •  13
  •   James Eichele Bernard Igiri    17 年前

    #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)
    

    @define LogCGPoint(POINT) NSLog(@"%s: (%0.0f, %0.0f)",
        #POINT POINT.x, POINT.y);
    

    使用它如下:

    LogCGPoint(cgPoint);
    

    将产生以下结果:

    cgPoint: (100, 200)
    
        5
  •  10
  •   Nishant Tyagi    13 年前

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

    例子:

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

    NSPoint: {10, 30}

    希望对你有帮助。

        6
  •  5
  •   NANNAV gngrwzrd    13 年前

    由于堆栈溢出破坏的RSS刚刚为我重新提出了这个问题,以下是我的基本解决方案: JAValueToString

    这可以让你写作 JA_DUMP(cgPoint) 得到 cgPoint = {0, 0} 记录。

        7
  •  5
  •   Hussain Shabbir    8 年前

    是的,您可以使用以下几个功能,如:

    1) NSStringFromCGPoint,  
    2) NSStringFromCGSize,  
    3) NSStringFromCGRect,  
    4) NSStringFromCGAffineTransform,  
    5) NSStringFromUIEdgeInsets,
    

    1) NSLog(@"NSStringFromCGPoint = %@", NSStringFromCGRect(cgPointValue));
    

    这样地。。。

        8
  •  2
  •   UdayM    10 年前
    NSLog(@"%@",CGRectCreateDictionaryRepresentation(rect));