我有以下C结构定义:存储和检索的C结构中NSMutable阵列
typedef结构{ 浮X; float y; float z; } metric;
我想将加速度计点存储在一个数组中,稍后再做一些操作。
所以我有一个是在我的viewDidLoad方法初始化像这样一个可变的数组:
metricsArray_ = [[[NSMutableArray里的alloc] INIT]保留];
我didAccelerate方法我创建一个结构来存储的值,并将其添加到阵列:
metric metricData;
metricData.x = acceleration.x;
metricData.y = acceleration.y;
metricData.z = acceleration.z;
NSValue *metricObject = [[NSValue valueWithBytes:&metricData objCType:@encode(struct metric)]retain];
[metricsArray_ addObject:metricObject];
后来,当我停止轮询数据我尝试在阵列上进行迭代,并记录该值,但该值全部为零:
NSEnumerator * enumerator = [metricsArray_ objectEnumerator];
id element;
while(element = [enumerator nextObject])
{
metric metricData;
[element getValue:&metricData];
NSLog(@"x=%f,y=%f,z=%f",metricData.x, metricData.y,metricData.z);
}
我在做什么错在这里?有没有更好的方法来存储加速度数据点?我想将它们存储在一个结构,而不是一个对象(虽然你最终不得不使用NSValue反正)
感谢
仅供参考:没有理由永远写[[[[[NSMutableArray alloc] init] retain]。如果刚从'alloc'中获得它,你已经拥有了它,所以保留它意味着你现在必须释放它*两次*。保留'metricObject'可能也是错误的,除非你在某个你没有显示的地方释放它。 – Chuck 2010-08-25 03:47:39