Objective-C에서 C Api로 작업하고 있습니다. 이 API는 특정 구조를 사용해야합니다. 구조체 배열을 사용하여 작업하는 방법을 파악하는 데 문제가 있습니다. I 클래스 나 구조체 Vertex
을 정의 Sprite
이sizeOf Struct 및 sizeOf 인스턴스 변수가 다른 값을 반환합니다.
:
내가 당신에게 몇 가지 코드에 더 뭔가를 보여줍니다. Sprite의 모든 인스턴스에는 자체 Vertices 배열이 있습니다. 나는이 방법으로 Sprite 클래스를 사용하는 다른 클래스에서
#import <Foundation/Foundation.h>
typedef struct {
float Position[3];
float Color[4];
} Vertex;
@interface Sprite : NSObject{
Vertex *_vertices;
}
//Getter setter methods
-(void)setVertices:(Vertex*)vx;
-(Vertex*)vertices;
@end
: 나는 정점 배열을 생성하고 난 스프라이트의 인스턴스에이 구조체를 할당 : 이제
Sprite *spr = [[Sprite alloc]init];
Vertex vertices2[] = {
{{1, -1, 0}, {1, 0, 0, 1}},
{{1, 1, 0}, {1, 0, 0, 1}},
{{-1, 1, 0}, {1, 1, 0, 1}},
{{-1, -1, 0}, {1, 1, 0, 1}}
};
spr.vertices = vertices2;
내가 직접에 sizeOf
을 수행하는 경우 vertices2
구조체 내가 112
값을 얻고 spr.vertices
에 sizeOf
을 수행하면 4
이 나옵니다. 왜??? 이것은 동일한 값을 가진 동일한 구조체를 의미합니다.
내 의심의 여지가 내가 어떻게 올바른 방법 구조체의 배열을 사용하는 Sprite 클래스를 수정할 수 있습니다 ... [] 배열로 잘못된 방법으로 포인터 *로
을 일하고 있다는 것입니다?
'sizeof'는 항상 컴파일 타임에 계산되지는 않습니다. 예를 들어 가변 길이 배열을 사용합니다. 하지만 그 중 하나가 아닙니다. – sapi