2012-04-10 23 views
1

如何使用對象的mmapped數據?在對象中使用mmap數據

例如UIImage。

如果我知道偏移量和字節數,並且可以檢索它,那麼它如何用於對象?

我對如何將數據傳遞給對象有點困惑,對象如何使用確切的字節數?

我目前一個字節地獲取mmapped數據並將其寫入一個文件,這會創建一個圖像,但我不確定如何在一個對象上執行此操作。

很顯然,當數據可用時,不需要分配對象,但它是如何傳遞給對象並由對象管理的?

回答

1

實際上,分配Cocoa對象的唯一方法是使用+alloc。我不認爲你可以真實地使用mmapped內存來保存對象。

但是,您可以使用它來檢索UIImage的圖像數據。

NSData* theData = [NSData dataWithBytesNoCopy: pointerToMMappedData 
             length: dataLength 
           freeWhenDone: NO]; 
UIImage* anImage = [UIImage imageWithData: theData]; 
+0

最後一部分正是我一直在尋找的感謝。所以一旦數據被分配給NSData對象,可以使用這些數據設置任何其他對象? – jarryd 2012-04-10 14:16:59

+0

@ Helium3:'theData'對象被初始化,以便它不擁有它指向的字節。您可以使用相同的字節設置任何其他對象,但嘗試更改它們或在數據對象仍然存在時取消映射內存是一個壞主意。 – JeremyP 2012-04-10 14:33:27

+0

謝謝。是的,它會被映射。如果虛擬內存中的數據被壓縮並且對象需要解壓縮數據會怎麼樣?有zlib功能用於即時解壓縮,但這些數據將保存在哪裏?如果有50個對象使用自己的解壓縮數據段,這些都將在堆棧中嗎? – jarryd 2012-04-10 15:32:05