我正在开发一款消息传递应用程序(类似于 WhatsApp),用户可以相互发送文本和图像消息。
我创建了一个 Message
对象,它是 NSManagedObject
的子类,用于存储消息详细信息,例如:
sender_name、timestemp、message_text 和 message_image(用于图像消息)
* 图像的平均大小类似于从 iPhone 相机胶卷库中拍摄的图像的大小。
第一个问题是:
将图像保存到 Core Data 是个好主意,还是将它们保存到文件系统会更好?
问题是,当我在聊天 View 中滚动 tableView 以查看旧消息时,当有图像要从核心数据加载时,滚动性能会变得非常糟糕。
我正在使用 NSFetchedResultsController
来获取消息,而且我一次获取的消息不超过 30 条。我试图通过创建 MessageImage
对象(也是 NSManagedObject
的子类)来存储 UIImage
来提高性能。
Message
对象与 MessageImage
是一对一的关系,我这样做是为了当 fetcher 从 Core Data 加载 30 条消息时,UIImage 本身直到要求。但我的表现仍然很差......
所以第二个问题是:
我可以做些什么来提高滚动性能?
最佳答案
创建图像的缩略图,这些缩略图是它们将在 ScrollView 中缩放到的确切大小。这样您就不必阅读所有高分辨率图像,也不必缩放它们。您可以使用 Core Data 或文件系统存储缩略图。我不认为会有很大的不同。但一定要将高分辨率原件存储在文件系统中。当用户点击图片时,您可以加载它们并显示原始全屏。
关于iphone - 使用 Core Data 图像填充 tableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595159/