Objective-C で C API を使用しています。この API は、いくつかの特定の構造を使用する必要があります。構造体の配列を操作する方法を理解しようとすると、いくつかの問題があります。
いくつかのコードを使用して、さらに何かを示します。
Sprite
struct を定義するクラスがありますVertex
。Sprite のすべてのインスタンスには、独自の Vertices 配列があります。
#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 クラスを次のように使用します。Vertex 配列を作成し、この構造体を Sprite の 1 つのインスタンスに割り当てます。
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
実行sizeOf
するspr.vertices
と が取得されます4
。どうして???つまり、これは同じ値を持つ同じ構造体です。
私の疑問は、私が array[] と pointer* を間違った方法で扱っていることです...
Sprite クラスを変更して、構造体の配列を正しい方法で使用するにはどうすればよいですか?