我有一个游戏对象,它在两个完全不同的地方处理。在Contact Listener中,我检查一些条件,如果它们发生,我必须保存一个或多个复杂数据部分。所以我决定使用struct。例如:
struct SomeStruct
{
int value1;
int value2;
CGPoint value3;
b2Vec2 value4;
};
typedef SomeStruct SomeStruct;
在游戏场景中,我浏览所有游戏对象,如果它的堆栈/数组不是空的,请做一些东西并擦拭它。
在Contact Listener中,它从头开始重复。
我必须使用这种架构,因为严格的执行顺序(必须在其他方法之后调用方法)。
我怀疑我需要像vector或NSMutableArray(我认为它不适用于struct),所以vector可能是唯一的方法。
但不明白如何实现它。您可以帮我一些代码/伪代码或链接到我可以找到解决方案的书/文章吗?
答案 0 :(得分:3)
Cocoa为此目的提供NSValue
类:
这会创建一个可以添加到NSMutableArray
的对象:
NSValue *someObj = [NSValue valueWithBytes:&myStruct objCType:@encode(SomeStruct)];
您可以使用[someObj pointerValue]
访问void*
来表示您在NSValue
中放置的结构的地址。
答案 1 :(得分:2)
这个问题有很多解决方案。
struct
。 obj-c类实际上与struct相同。CFArray
(CFArrayCreateMutable
)并将其作为指针放在那里。SomeStruct[]
)并在需要时增加其长度。