Использование данных mmap с объектами

Как можно использовать mmapped данные с объектами?

например UIImage.

Если я знаю смещение и количество байтов и могу их получить, как это используется с объектами?

Я немного запутался в том, как передать данные объекту, как объект использует только точное количество байтов?

В настоящее время я извлекаю данные mmapped байт за байтом и записываю их в файл, это создает изображение, но я не уверен, как это сделать с объектом.

Очевидно, что нет необходимости выделять объект, поскольку данные доступны, но как они передаются объекту и управляются им внутри?


person some_id    schedule 10.04.2012    source источник


Ответы (1)


По сути, единственный способ разместить объект Cocoa — это +alloc. Я не думаю, что вы можете реально использовать mmapped память для сохранения объектов.

Однако вы можете использовать его для получения данных изображения для UIImage.

NSData* theData = [NSData dataWithBytesNoCopy: pointerToMMappedData 
                                       length: dataLength  
                                 freeWhenDone: NO];
UIImage* anImage = [UIImage imageWithData: theData];
person JeremyP    schedule 10.04.2012
comment
Последняя часть была именно тем, что я искал, спасибо. Итак, как только данные назначены объекту NSData, любой другой объект может быть настроен с использованием этих данных? - person some_id; 10.04.2012
comment
@ Helium3: объект theData инициализируется так, что ему не принадлежат байты, на которые он указывает. Вы можете настроить любой другой объект, используя те же байты, но было бы плохой идеей пытаться изменить их или отменить отображение памяти, пока объект данных все еще существует. - person JeremyP; 10.04.2012
comment
Спасибо. Да, он будет нанесен на карту. Что, если данные в виртуальной памяти сжаты, а объекты должны иметь распакованные данные? Есть функции zlib для распаковки на лету, но где эти данные будут храниться? Если есть 50 объектов, использующих свои собственные сегменты распакованных данных, все ли они будут в стеке? - person some_id; 10.04.2012
comment
@ Helium3: Пока данные выглядят так же, как данные изображения в файле, UIImage справится. - person JeremyP; 10.04.2012