2014-12-21 4 views
-1

touchesBegan 메서드의 didMoveToView 메서드에 정의 된 C 스타일 CGFloat 배열을 사용하고 싶습니다. 배열이 CGFloat이므로 속성으로 정의 할 수 없습니다. 지구본이 작동하지 않는 것 같습니다. 내 배열은 다음과 같이 정의됩니다.범위를 벗어남 CGFloat 배열

CGFloat levelMapX[] = {self.frame.size.width/2 ...}; 

SpriteKit을 사용하고 있습니다.

+2

를? – rmaddy

+2

컴파일해야합니다. 전체 방법 게시. – EricS

답변

0

CGFloat에 대한 포인터를 선언 할 수 있습니다. 배열과 포인터 are not the same in C이 있지만, 그들은 종종 유사한 방법으로 사용될 수 있습니다.

@property (assign, nonatomic) CGFloat* array; 

그리고 배열처럼 사용

const NSInteger myArraySize = 10 * sizeof(CGFloat); 
self.array = malloc(myArraySize); 
self.array[0] = 0.42; 
self.array[1] = M_PI; 

그것을 무료로 기억하면 메모리 누출되지 않도록 : 어떤 인스턴스 변수에 대한

- (void)dealloc { 
    free(self.array); 
} 
+0

어플 리케이션이 멈추었지만 이유는 확실치 않습니다. –

+0

코드는 실제로'const NSInteger myArraySize = 10 * sizeof (CGFloat);'를 읽어야합니다. 여기서 10은'CGFloat'의 수입니다. 'malloc'은 바이트 단위의 크기를 사용합니다. –

+0

네, 저의 실수입니다. 지적 해 주셔서 고맙습니다. –