OpenGL 다각형을 그리는 Objective C 클래스를 작성하려고합니다. 나는 내 정점 좌표를 저장하기 위해 NSMutableArray를 사용하여이 작업을 수행했습니다. 그러나 이것은 객체가 그려 질 때마다 NSMutableArray를 ccVertex2F [] 배열로 변환하기 위해 배열을 루프 할 필요가 있기 때문에 약간 비효율적 인 것으로 보입니다.Objective C 클래스 초기화에 primitive C 배열 인스턴스 변수를 할당합니다.
내가 원하는 것은 ccVertex2F 배열을 인스턴스 변수로 사용하는 것입니다. 그런 다음 초기화 할 때 크기를 포인트 수로 설정하십시오. 그러나 내 배열의 크기가 항상 0이므로이 오류가 throw됩니다.
저는 Java 프로그래밍에 익숙하지만 C 및 메모리 관리에 전혀 익숙하지 않습니다. 지금까지 내가 무엇을 가지고이의
@interface PolygonNode : CCNode {
ccVertex2F * _glPoints ;
}
@property (nonatomic, readwrite) ccVertex2F * glPoints ;
@end
나의 이해는 내가 ccVertex2F에 대한 포인터 인스턴스 변수를 만드는거야 것입니다. 내 init 메소드에서
나는 다음과 같습니다
ccVertex2F sizedGlPoints [numberOfPoints * sizeof(ccVertex2F)];
_glPoints = &sizedGlPoints;
이의 목적은 나의 새로운 올바르게 크기의 배열 인스턴스 변수 지점을 만드는 것이 었습니다. 그러나이 코드 뒤에 크기를 인쇄 할 때 _glPoints 크기가 변경되지 않습니다.
내가하고 싶은 일의 핵심은 내가 메모리를 낭비하지 않도록 클래스를 초기화 할 때 배열의 크기를 선택할 수 있다는 것입니다.
감사합니다 : 당신이 (
-dealloc
또는 다시 할당하기 전에) 완료하면은 그냥 무료로 기억 답장. 그것은 완벽하게 작동했습니다! –