[英]Initialize struct from NSArray?
我正在尝试在我构建的应用程序中实现KD树,当前示例如下所示:
struct kd_node_t {
int trapID;
double x[MAX_DIM];
struct kd_node_t *left, *right;
};
struct kd_node_t wp[] =
{
{1, {2, 3}}, {1, {5, 4}}, {1, {9, 6}}, {1, {4, 7}}, {1, {8, 1}}, {1, {7, 2}}
};
我想做的是动态地将数组放入结构中,而不是像示例中那样很少。 有什么想法我该怎么做?
编辑:
我意识到问题应该有所不同->如何从NSArray数据初始化此特定结构?
您可以:
struct kd_node_t {
NSArray *myArray
};
kd_node_t myStruct;
myStruct.myArray = [newArray retain];
它应该工作。
如果使用的是ARC,则使用NSArray *
字段定义struct
并NSArray *
,但如果准备使用__unsafe_unretained
引用,则可以完成。
从您的问题尚不清楚您是否出于某种原因需要使用struct
。 如果这样做是为了获得“轻量级”结构,则可以使用无方法类:
@interface KD_Node : NSObject
{
int trapID;
NSArray *x;
KD_Node *left, *right;
}
@end
@implementation KD_Node
@end
除分配外,对malloc()
(或朋友)的调用被[KD_Node new]
替换,使用KD_Node *
就像使用struct kd_node_t *
-字段(实例变量)是使用->
运算符引用的。 与普通struct
相比,存储开销很小,但是您可以正常使用NSArray *
。 (当然,如果您愿意,也可以稍后添加属性和/或方法。)
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.