programing

NSLog C 구조(CGRect나 CGPoint 등)가 가능합니까?

javaba 2022. 8. 14. 16:48
반응형

NSLog C 구조(CGRect나 CGPoint 등)가 가능합니까?

모든 속성을 명시적으로 입력하지 않고 C 구조를 디버깅할 수 있도록 하고 싶다.

즉, 다음과 같은 작업을 수행할 수 있기를 원합니다.

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

분명히 '%@'은 작동하지 않습니다.그러므로 질문하겠습니다.

다음과 같이 시험해 보십시오.

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

다양한 CG 구조를 다음과 같이 변환하는 UIKit에서 제공하는 많은 기능이 있습니다.NSStrings. 동작하지 않는 이유는%@오브젝트를 나타냅니다.aCGPointC구조(C구조도 마찬가지)CGRectCGSizes)

다음과 같은 기능이 몇 가지 있습니다.

NSStringFromCGPoint  
NSStringFromCGSize  
NSStringFromCGRect  
NSStringFromCGAffineTransform  
NSStringFromUIEdgeInsets

예:

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

사용할 수 있습니다.NSValue이걸 위해서.NSValue 개체는 단일 C 또는 Objective-C 데이터 항목을 위한 단순 컨테이너입니다.int, float, char 등의 스칼라 타입은 물론 포인터, 구조체, 오브젝트 ID를 포함할 수 있습니다.

예:

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

출력: NSPoint: {10, 30}

도움이 되길 바랍니다.

예, 다음과 같은 몇 가지 기능을 사용할 수 있습니다.먼저 CGPoint 구조를 문자열로 변환해야 합니다(예 참조).

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

예를 들어 다음과 같습니다.

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

이렇게...

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)

CGPoint에 대해서도 같은 작업을 수행할 수 있습니다.

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

다음과 같이 사용합니다.

LogCGPoint(cgPoint);

다음과 같은 결과를 얻을 수 있습니다.

cgPoint: (100, 200)
NSLog(@"%@",CGRectCreateDictionaryRepresentation(rect));

Stack Overflow의 고장난 RSS가 이 질문을 부활시켰기 때문에, 저의 일반적인 해결책은 다음과 같습니다.JAValueToString

이렇게 하면,JA_DUMP(cgPoint)취득하다cgPoint = {0, 0}기록되었습니다.

언급URL : https://stackoverflow.com/questions/550195/is-it-possible-to-nslog-c-structs-like-cgrect-or-cgpoint

반응형