2012-03-14 10 views
0

私はiPhone用アプリケーション(iOS 5)に取り組んでいます。私がしなければならないことは、サーバーから派生したバイナリデータを使ってマップを作成することです。サーバーが使用可能なバイト数を持っている場合は、バッファーuint8_t [1024]に読み込みます。次に、このデータを解析してオブジェクト(例:経度と緯度のある点を含むパス)を作成しますが、それらのオブジェクトはしばしば私のバッファよりも大きくなります。シミュレータ上では、これは大きな問題ではありません。可変配列に格納するのに十分なメモリがあるからです。iOSのサーバからバイナリデータを受信して​​保存する方法は?

しかし、デバイスのアプリケーションを安全にするにはどうすればよいですか? iOSデバイスにはどのようなアレイサイズを使用する必要がありますか?

私の問題が理解できたことを願っています。

+0

iOSデバイスには1 KB以上のメモリがあると思いますが、心配している場合はobjC++とベクターを使用してください。 –

+0

私はiOSプログラミングには全く新しいので、アプリケーションが常にメモリの問題やパフォーマンスの問題に直面しないようにしています。だから私はそれが1キロバイトのサイズを持っているバッファーだけであるため、増加する配列のサイズに問題があるかもしれないことを知りたかった... – Bautzi89

答えて

0

NSMutableArrayを使用してデータを一時的に保存し、必要に応じてサイズを拡張することができます。

これが役に立ちます。

+0

あなたの答えをありがとう。私が気づくべきである制限はありますか? – Bautzi89

+0

私は、OSがAppDelegateの 'applicationDidReceiveMemoryWarning'を介してあなたに通知するメモリ警告が一般的だと思います。私は正常に2MバイトのサイズのNSDataを使用して、私はNSMutableArrayはメモリの制限の制約と異なるとは思わない。 – MrTJ

0

代わりにNSData(またはその可変サブクラスNSMutableData)を使用したことがありますか?

これらは、バイトバッファ用のオブジェクトラッパーを提供し、セレクタappendData:を使用して任意に拡張できます。 documentationから

NSMutableData(およびそのスーパークラスがNSData)バイトバッファのデータオブジェクト、オブジェクト指向のラッパーを提供します。データオブジェクトは、単純に割り当てられたバッファ(つまり、ポインタが埋め込まれていないデータ)に、Foundationオブジェクトの動作を引き継ぎます。

つまり、メモリの問題に直面する可能性は低いので、キロバイト単位でしか割り当てていないとします。

+0

したがって、NSMutableDataオブジェクトにバイトを追加し続け、私の目的と一緒に。私はあなたの権利を得ていますか? – Bautzi89

+0

これは正しいです。この方法では、バイナリデータに必要なだけのメモリを割り当てます。 – jnic

関連する問題