У меня определена следующая структура C:
typedef struct { float x; плавать у; поплавок г; } метрика;
Я хочу сохранить точки акселерометра в массиве и что-то сделать с ним позже.
Итак, у меня есть изменяемый массив, который инициализируется так в моем методе viewDidLoad:
metricsArray_ = [[[NSMutableArray alloc] init]retain];
в моем методе 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)
Спасибо
alloc, значит, он у вас уже есть, поэтому его сохранение означает, что теперь вам нужно выпустить его дважды. СохранениеmetricObject, вероятно, также неправильно, если вы не выпустите его где-нибудь, что вы нам не показываете. - person Chuck   schedule 25.08.2010