0

我正在构建一个消息传递应用程序,用户当然可以互相发送短信,现在我想添加图像发送支持。

我有一个NSManagedObject子类ChatMessage来表示具有诸如 messageId、senderId、senderName、text、receiverId 等属性的聊天消息...

现在处理图像的最佳做法是什么?
我不是在谈论如何发送和接收图像,而是在谈论如何保存它们(当用户获取图像以及用户上传和发送图像时)

ChatMessage将图像属性添加到Core Data 并将其保存是一个好主意吗?或者也许将其保存到单独的文件中?我需要在保存之前调整它们的大小吗?当我处理图像时,我是否应该期待遇到特别的问题?

4

1 回答 1

2

埃亚尔,

Core Data 可以很好地处理图像。特别是,在 iOS v5 和 Lion 中,大型 BLOB 存储在持久存储之外。小型 BLOB 仍存储在数据库中。有两个警告。首先,在 Core Data 中,创建保留周期非常容易,虽然这绝不是一件好事,涉及大型 BLOB 的保留周期会导致操作系统相对快速地杀死您的进程。因此,最佳实践是创建一个仅包含 BLOB 和反向链接的叶实体。这大大降低了您使用 BLOB 创建保留周期的可能性。我建议与 BLOB 的关系是一对一的关系。其次,大 BLOB 会导致内存警告。Core Data 似乎不会将这些图像内存映射到 RAM 中。因此,它们不能轻易地从您的常驻内存集中自动清除。就我而言,我有一个让 CD 处理 BLOB 的应用程序。我还有一个应用程序,其中 BLOB 非常大(12-24 MB)。在后一种情况下,我自己处理 BLOB 存储和内存映射。

是否调整图像大小实际上取决于您的应用程序和存储要求/限制。CD 中的 BLOB 存储不会影响此问题。

安德鲁

于 2012-06-01T13:06:15.197 回答