我正在构建一个消息传递应用程序,用户当然可以互相发送短信,现在我想添加图片发送支持。
我有一个NSManagedObject
子类ChatMessage
来表示聊天消息,其中包含messageId,senderId,senderName,text,receiverId等属性...
现在处理图像的最佳做法是什么? 我不是在谈论如何发送和接收图像,我在谈论如何保存它们(当用户获取图像以及用户上传和发送图像时)
将图像属性添加到ChatMessage
并使用Core Data保存是不是一个好主意?或者可能将其保存到单独的文件中?我需要在保存之前调整它们的大小吗?在处理图像时,我是否应该特别注意?
答案 0 :(得分:2)
的Eyal,
Core Data可以很好地处理图像。特别是,在iOS v5和Lion中,大型BLOB存储在持久性存储之外。小型BLOB仍存储在DB中。有两个警告。首先,在Core Data中,创建保留周期非常容易,而这绝不是一件好事,涉及大型BLOB的保留周期将导致操作系统相对快速地终止您的进程。因此,最佳做法是创建一个仅包含BLOB和反向链接的叶实体。这使得使用BLOB创建保留周期的可能性大大降低。我建议与BLOB的关系是一对一的关系。其次,大型BLOB会导致内存警告。核心数据似乎没有将这些图像存储到RAM中。因此,它们不能轻易地从您的驻留内存集中自动清除。在我的情况下,我有一个应用程序,我让CD处理BLOB。我也有一个应用程序,其中BLOB非常大(12-24 MB)。在后一种情况下,我自己处理BLOB存储和内存映射。
是否调整图像大小实际上取决于您的应用程序和存储要求/限制。 CD中的BLOB存储不会影响此问题。
安德鲁