Objective c 将结构写入NSMutableArray
我有一个在两个完全不同的地方处理的游戏对象。在Contact Listener中,我检查一些情况,如果出现,我必须保存一部分或多部分复杂数据。所以我决定使用struct。例如:Objective c 将结构写入NSMutableArray,objective-c,arrays,struct,objective-c++,Objective C,Arrays,Struct,Objective C++,我有一个在两个完全不同的地方处理的游戏对象。在Contact Listener中,我检查一些情况,如果出现,我必须保存一部分或多部分复杂数据。所以我决定使用struct。例如: struct SomeStruct { int value1; int value2; CGPoint value3; b2Vec2 value4; }; typedef SomeStruct SomeStruct; 在游戏场景中,我浏览了所有游戏对象,如果堆栈/数组不是空的,那么做一
struct SomeStruct
{
int value1;
int value2;
CGPoint value3;
b2Vec2 value4;
};
typedef SomeStruct SomeStruct;
在游戏场景中,我浏览了所有游戏对象,如果堆栈/数组不是空的,那么做一些事情并擦拭它
在Contact Listener中,它从一开始就重复
我必须使用这种架构,因为执行顺序很严格(方法必须在其他方法之后调用)
我怀疑我需要像vector或NSMutableArray这样的东西(我认为它不适用于struct),所以vector可能是唯一的方法
但我不知道如何实现它。您可以帮我提供一些代码/伪代码或指向我可以找到解决方案的书/文章的链接吗?Cocoa为此提供了
NSValue
类:
这将创建一个对象,您可以将其添加到NSMutableArray
:
NSValue *someObj = [NSValue valueWithBytes:&myStruct objCType:@encode(SomeStruct)];
您可以使用
[someObj pointerValue]
访问一个void*
表示您放入NSValue
中的结构的地址,该问题有很多解决方案
struct
。obj-c类实际上与结构相同CFArray
(CFArrayCreateMutable
)并将其作为指针放在那里SomeStruct[]
)并在需要时增加其长度是的,可能只有变量的Obj-C类会有所帮助。我会试着用它。在这种情况下,我对内存管理有点困惑。
malloc
和free
:)这并不复杂。很抱歉,无法理解如何获取/更改特定结构元素的值…:(@maaboo将void*
转换为指向您的结构的指针,并通过->
操作符更改该结构的字段:((SomeStruct*)[someObj pointerValue])->value2=5