2016-11-09 6 views
0

私の質問を拡大するには、2メガバイトのビデオファイルへのURLを含むNSStringがあります。私はdataWithContentsOfURLを使ってそれをNSDataという形で保存します。私はブレークポイントを追加し、データのサイズをチェックアウトしました。それはちょっと高かった(12MBより)、ちょうどバイトを取り、それに数学をした(データ/ 1024/1024)。オブジェクトはNSDataにどのように格納されますか?データサイズ(バイト単位)はNSDataとして保存する前と同じですか?

次に、データをUISaveVideoAtPathToSavedPhotosAlbumのビデオファイルとして保存し、attributesOfItemAtPathを使用して、保存したファイルの属性をFileSizeにしました。正しく表示されています(2MB)。私が知りたいのは、オブジェクトがどのようにコード化されているかです。 URLをデータファイルに変換する際に、この劇的なサイズの変化(バイト単位)

+0

NSDataオブジェクトがどのくらい正確に12MBであると判断しましたか? – rmaddy

+0

データオブジェクトの上にブレークポイントを追加してホバリングしました。それは私にこれを与えました: ' 私はちょうどサイズを取った。 –

+1

あなたの質問を、NSDataオブジェクトを作成して入力するための関連コードで更新してください。また、データの 'length'プロパティをログに記録します。その価値は何ですか? – rmaddy

答えて

1

私が知りたいのは、オブジェクトがどのようにコード化されているかです。 URLをデータファイルに変換する際に、この劇的なサイズの変化(バイト単位)

NSDataは、「符号化」されていないため、1つに格納されたバイトは生のバイトです。構造にいくらかのオーバーヘッドがありますが、これは小さいです。

2MBファイルの読み込みには2MBを少し超える時間がかかりますが、メモリ使用量に気付かないほどオーバーヘッドが小さくなります。これよりもはるかに大きなファイルを読み取ることができ、ファイルサイズよりも大きなメモリ使用量の増加は見られません。

あなたのメモリ使用量の増加は、他の何かのためです。偶発的な複数コピーのNSData?圧縮されたビデオを意図せずに圧縮解除している可能性がありますか?あなたは原因を捜す必要があります。

関連する問題