我有以下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