【发布时间】:2011-08-07 23:08:10
【问题描述】:
我需要创建一个结构数组,例如:
typedef struct
{
int fill;
BOOL busy;
} MapCellST;
如何在 NSMutableArray 中添加此结构的实例,以及如何提取结构的副本并在以后使用其属性?
【问题讨论】:
我需要创建一个结构数组,例如:
typedef struct
{
int fill;
BOOL busy;
} MapCellST;
如何在 NSMutableArray 中添加此结构的实例,以及如何提取结构的副本并在以后使用其属性?
【问题讨论】:
将结构包装在NSValue:
MapCellSt x;
NSValue* value = [NSValue value:&x withObjCType:@encode(MapCellSt)];
稍后提取:
[value getValue:&x];
【讨论】:
使用NSMutableDictionary 而不是NSMutableArray。
typedef struct {...} MyStruct;
NSMutableString* myKey = [NSMutableString stringWithString:@"MyKey"];
NSValue *myStructPtr = [NSValue value:&myStruct withObjCType:@encode( MyStruct )];
[myMutableDictionary setObject:myStructPtr forKey:myKey];
【讨论】:
你不能。
只有真正的 Obj-C 对象才能直接添加到 NSMutableArray 和好友中;为了执行您所描述的操作,您必须使用您要使用的结构的属性创建一个类。
编辑: 正如 Tamás 所说,您也可以使用 NSValue;但很可能为您的 MapCell 创建一个类是一个更好的主意。
【讨论】: