objective-c - 一种使核心数据获取性能更好的简单方法

标签 objective-c ios cocoa-touch core-data

假设我有一个维护联系人的基本 iPhone 应用程序。我有一个名为“Contact”的实体,它具有“name”、“address”和“photo”属性。该应用程序的主视图只是一个显示每个联系人姓名的表格 View 。然后用户可以单击每个名称以显示相应的照片和地址(在单独的 View Controller 中)。

问题是,照片​​的尺寸可能非常大。

当我获取托管对象时,它的所有属性是否也被带入内存?在这种情况下,加载应用程序并在表格 View 中显示姓名可能需要很长时间,因为应用程序也在底层获取所有照片(和地址),对吗?

出于这个原因,你不会说我应该——为了让主视图更活泼(并且应用程序加载更快)——创建一个新的“ContactFacade”实体,它只有“name”属性和与包含有关该联系人的更多详细信息的“联系人”实体的关系

最佳答案

不是将图像存储在核心数据中,而是将它们作为文件存储在磁盘上,并且只将文件名存储在核心数据中。

如果您使用 UIImage 从文件中读取图像,它会自动从 ram 中删除自己,并在必要时将自己加载回 ram。

如果您想要真正好的性能,您应该确保图像更小,或者可能有两种尺寸(拇指尺寸和完整尺寸)。

另外,请注意您应该使用哪种图像格式。 PNG 将使用更多的磁盘空间,但它需要比 JPEG 更少的 CPU 时间来渲染。

关于objective-c - 一种使核心数据获取性能更好的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237192/

相关文章:

ios - MVC : Is a custom UITableViewCell a view or controller or both?

objective-c - SIGABRT fatal error

ios - 如何绘制渐变填充弧,即彩虹?

objective-c - 想要从图像序列和音频文件制作视频文件

iphone - iOS 低内存崩溃,但内存使用率非常低

iOS:使用 JSON 的 Twitter URL 路径?

android - Meteor 应用程序,如果我们添加一个新的 cordova 插件,我们是否必须重新提交该应用程序或由 meter hotcode push 处理?

objective-c - ASIHTTPRequest setTemporaryFileDownloadPath:不适用于某些URL

objective-c - 自动释放溺水

iphone - xcode,如何添加根据我在相机胶卷中选择的内容更改图像的 ImageView ?