0

私はメッセージングアプリを構築しています。もちろん、ユーザーはお互いにテキストメッセージを送信できます。次に、画像送信サポートを追加したいと思います。

messageId、senderId、senderName、text、receiverIdなどのプロパティを持つチャットメッセージを表す サブクラスNSManagedObjectがあります。ChatMessage

では、画像を処理するためのベストプラクティスは何ですか?
私は画像を送受信する方法について話しているのではなく、画像を保存する方法について話している(ユーザーが画像を取得するとき、およびユーザーが画像をアップロードして送信するとき)

ChatMessage画像プロパティを追加してCoreDataと一緒に保存するのは良い考えですか?または多分それを別のファイルに保存しますか?保存する前にサイズを変更する必要がありますか?画像を扱うときに特に問題が発生することを期待する必要がありますか?

4

1 に答える 1

2

Eyal、

CoreDataは画像を適切に処理します。特に、iOS v5およびLionでは、大きなBLOBは永続ストアの外部に格納されます。小さなBLOBは引き続きDBに保存されます。2つの注意点があります。まず、Core Dataでは、保持サイクルを作成するのは非常に簡単ですが、これは決して良いことではありません。大きなBLOBを含む保持サイクルにより、OSは比較的迅速にプロセスを強制終了します。この結果として、ベストプラクティスは、BLOBと逆リンクだけを保持するリーフエンティティを作成することです。これにより、BLOBを使用して保持サイクルを作成する可能性が大幅に低くなります。BLOBとの関係は1対1の関係にすることをお勧めします。次に、大きなBLOBはメモリ警告を引き起こします。Core Dataは、これらのイメージをRAMにメモリマップするようには見えません。したがって、常駐メモリセットから簡単に自動的に削除することはできません。私の場合、CDにBLOBを処理させるアプリがあります。BLOBが非常に大きい(12〜24 MB)アプリもあります。後者の場合、私はBLOBストレージとメモリマッピングを自分で処理します。

画像のサイズを変更するかどうかは、アプリケーションとストレージの要件/制限によって異なります。CDのBLOBストレージはこの問題に影響しません。

アンドリュー

于 2012-06-01T13:06:15.197 に答える