NSArray에 CGPoint 객체를 쉽게 추가하는 방법은 무엇입니까?


129

"경로"와 같은 것을 설명하는 약 50 개의 CGPoint 객체가 있으며 NSArray에 추가하고 싶습니다. 주어진 인덱스에 해당하는 CGPoint를 반환하는 메소드가 될 것입니다. p1 = ...; 같은 50 개의 변수를 만들고 싶지 않습니다. p2 = ... 등. 객체로 NSArray를 초기화 할 때 해당 지점을 "즉시"정의 할 수있는 쉬운 방법이 있습니까?

답변:


324

UIKit애플에 CGPoint에 대한 지원을 추가 NSValue당신이 할 수 있습니다 :

NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];

CGPoint만큼 [NSValue] 인스턴스를 나열하고 목록을 nil로 끝냅니다. 이 구조의 모든 객체는 자동 해제됩니다.

반대로 배열에서 값을 가져올 때 :

NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];

3
스칼라 유형의 경우 NSNumber를 살펴보십시오. numberWithBool : numberWithInteger : numberWithFloat :, numberWithUnsignedShort : 등과 같은 생성자를 볼 수 있습니다.
Jarret Hardie 2016 년

4
또는 NSValue를 직접 사용할 수 있습니다 : 예를 들어 [NSValue valueWithBytes : & someStructSockaddr objCType : @encode (struct sockaddr)].
Jim Dovey

7

나는 이것을 사용한다 :

배열 만들기 :

NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];

첫 번째 CGPoint 객체를 가져옵니다.

CGPoint myPoint = [myArray[0] CGPointValue];

3

최소한의 형태로 이것을 작성할 수도 있습니다.

CGPoint myArray[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) };

CGPoint p2 = myArray[1];

2

봤어 CFMutableArray? 그것은 당신에게 더 효과적 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.