簡體   English   中英

在NSMutable數組中存儲和檢索C結構

[英]Storing and retrieving C struct in NSMutable Array

我定義了以下C結構:

typedef struct {float x; 浮動y; 浮點z; }指標;

我想將加速度計點存儲在數組中,並在以后做一些事情。

因此,我有一個可變數組,其初始化方式類似於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)

謝謝

我最初的想法是:如果僅將其用於x / y / z值,為什么需要一個度量結構。 已經有一個對象: UIAcceleration

我有一個游戲,它在accelerometer:didAccelerate:回調中接收到的UIAcceleration實例以UIAcceleration 60次的速度存儲在NSMutableArray 零性能問題。

(我將NSMutableArray用作“環形緩沖區”。當添加了N個以上對象時,將從頭開始刪除項。因此,我只捕獲了最后N秒)

我什至無法在上面編譯您的代碼。 我必須進行以下更改,以刪除@encode()中的結構。 然后,這似乎可以編譯並起作用。

NSValue * metricObject = [NSValue valueWithBytes:&metricData objCType:@encode(metric)];

似乎還有不必要的保留。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM