objective-c - objective-c - 在消息传递应用程序中保存图像

标签 objective-c ios image core-data uiimage

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

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

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

将图像属性添加到 ChatMessage 并使用 Core Data 保存它是个好主意吗?或者也许将它保存到单独的文件?我需要在保存前调整它们的大小吗?在处理图像时,我是否应该预料到会遇到特殊问题?

最佳答案

埃亚尔,

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 存储不会影响此问题。

安德鲁

关于objective-c - objective-c - 在消息传递应用程序中保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837388/

相关文章:

ios - 如何将 subview 放在不同屏幕的正确位置

java - 有没有办法从 java 执行 Objective-C 应用程序?

ios - 为什么 AVAudioPlayer 在拔下耳机后继续播放?

ios - 带有 uiPageViewControllers 的 SetViewControllers 不工作

python - 如何用keras显示多张图像?

php - WordPress Customizer API (Kirki) - Repeater Image

ios - Uitableview Cell Animation like Secret App

iphone - objective-c : Using UIImage for Stroking

ios - Swift 项目中缺少所需的架构 x86_64 错误?

Android 从 URL 填充 ImageView