구성하는 모든 속성을 명시 적으로 입력하지 않고도 C 구조를 디버깅 할 수 있기를 원합니다.
즉, 나는 이런 식으로 할 수 있기를 원합니다.
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
분명히 '% @'는 작동하지 않으므로 질문입니다.
구성하는 모든 속성을 명시 적으로 입력하지 않고도 C 구조를 디버깅 할 수 있기를 원합니다.
즉, 나는 이런 식으로 할 수 있기를 원합니다.
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
분명히 '% @'는 작동하지 않으므로 질문입니다.
답변:
당신은 이것을 시도 할 수 있습니다 :
NSLog(@"%@", NSStringFromCGPoint(cgPoint));
다양한 CG 구조체를 s 로 변환하는 UIKit 에서 제공 하는 많은 기능이 있습니다 NSString
. 작동하지 않는 이유 %@
는 객체를 의미 하기 때문 입니다. A는 CGPoint
C 구조체 (그리고 그렇게되어 CGRect
S와 CGSize
S).
NSPoint
한 다음을 호출해야 NSStringFromPoint
합니다. 예 :NSStringFromPoint(NSPointFromCGPoint(point))
다음과 같은 몇 가지 기능이 있습니다.
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
예를 들면 :
NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
다음 매크로를 사용하여 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)
NSValue
이것을 위해 사용할 수 있습니다 . NSValue의 목적은 단일 또는 목표 C-C의 데이터 항목에 대한 간단한 컨테이너이다. 포인터, 구조체 및 객체 ID뿐만 아니라 int, float 및 char와 같은 스칼라 유형을 보유 할 수 있습니다.
예:
CGPoint cgPoint = CGPointMake(10,30);
NSLog(@"%@",[NSValue valueWithCGPoint:cgPoint]);
출력 : NSPoint: {10, 30}
그것이 당신을 돕기를 바랍니다.
스택 오버플로의 깨진 RSS 가이 질문을 다시 부활 시켰기 때문에 거의 일반적인 해결책은 다음과 같습니다 .JAValueToString
이것은 당신이 작성할 수 있습니다 JA_DUMP(cgPoint)
얻을 cgPoint = {0, 0}
기록.
예, 다음과 같은 몇 가지 함수를 사용할 수 있습니다. 먼저 CGPoint 구조체를 문자열로 변환해야합니다 (예제 참조).
1) NSStringFromCGPoint,
2) NSStringFromCGSize,
3) NSStringFromCGRect,
4) NSStringFromCGAffineTransform,
5) NSStringFromUIEdgeInsets,
예를 들면 다음과 같습니다.
1) NSLog(@"NSStringFromCGPoint = %@", NSStringFromCGRect(cgPointValue));
이렇게 ...