2012-04-10 5 views
1

オブジェクトでmmapデータを使用するにはどうすればよいですか?オブジェクトにmmapデータを使用する

UIImage。

私がオフセットとバイト数を知っていて、それを取得できるのであれば、これはどのようにオブジェクトで使用されますか?

データをオブジェクトに渡す方法についてちょっと混乱していますが、オブジェクトは正確なバイト数だけを使用していますか?

現在、mmバイトのデータを1バイトずつ取り出してファイルに書き込むと、画像が作成されますが、オブジェクトでこれを行う方法はわかりません。

明らかに、データが利用可能なのでオブジェクトを割り当てる必要はありませんが、内部的にオブジェクトに渡され管理されますか?

答えて

1

効果的には、ココアオブジェクトを割り当てる唯一の方法は+allocです。私は実際にオブジェクトを永続化するためにmmappedメモリを使用できるとは思わない。

ただし、UIImageの画像データを取得するために使用できます。

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

最後の部分は、私が感謝のために探していたものです。したがって、データがNSDataオブジェクトに割り当てられたら、このデータを使用して他のオブジェクトを設定できますか? – jarryd

+0

@ Helium3: 'theData'オブジェクトは、それが指すバイトを所有しないように初期化されます。同じバイトを使用して他のオブジェクトを設定することはできますが、データオブジェクトがまだ存在する間にそれらを変更したり、メモリのマップを解除したりするのは悪い考えです。 – JeremyP

+0

ありがとうございます。はい、マップされます。仮想メモリ内のデータが圧縮され、オブジェクトが圧縮解除されたデータを必要とする場合はどうなりますか?その場で圧縮解除のためのzlib関数がありますが、このデータはどこに保存されますか?独自の圧縮解除されたデータセグメントを使用するオブジェクトが50個ある場合、これらはすべてスタックにありますか? – jarryd

関連する問題