我正在使用 Objective-C 中的 C Api。这个 API 需要使用一些特定的结构。我在试图弄清楚如何使用结构数组时遇到了一些问题。
我用一些代码向您展示了更多内容:
我有Sprite
我定义 struct的类Vertex
。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 类:我创建一个顶点数组并将这个结构分配给 Sprite 的一个实例:
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
struct上112
执行,我会得到 value 并sizeOf
在spr.vertices
我得到4
. 为什么???我的意思是这是具有相同值的相同结构。
我怀疑我正在以错误的方式使用 array[] 和 pointer* ...
如何修改 Sprite 类以正确使用结构数组?