iKImageBrowserView上的高内存使用率(或创建内存质量缩略图?)

时间:2011-12-28 11:01:43

标签: objective-c cocoa ikimagebrowserview

在我正在开发的mac应用程序中,我有iKImageBrowserView,显示的内容类似于500/1000图像。

关闭图像显示,内存消耗非常低,约为50 MB 打开图像显示,内存消耗非常高,约为500 MB 每次向上/向下滚动时,内存使用量都会增加。

以下是imageBrowser:itemAtIndex

的摘录
    ..
    MyBrowserNSImageItem *item = [[MyBrowserNSImageItem alloc] initWithCover:coverImage andId:myFile];
    return [item autorelease];

其中coverImage从对象缓存中读取,并且每次都不会初始化。

如何减少内存使用量?

更新:我尝试使用imageVersion:来自DataSourceProtocol,但内存使用率仍然很高。如果我初始化图像但没有将它们传递给ikImageBrowserView内存很低。

其他更新:我做了另一项测试。每次我分配一个简单的PNG图像的对象。而这次记忆力很低。只有在使用真实图像时才会出现问题。它们是约50 / 100KB的JPG。可能当它们被加载到内存中时,它们会解压缩。如何减少NSImage的内存使用量?

更新:问题在于JPEG的质量。它们在显示时会消耗太多内存。所以问题是:如何在Cocoa中生成内存/质量缩略图?

1 个答案:

答案 0 :(得分:2)

为了分享我未来读者的经验,我发现了自己的问题。我的代码中存在内存泄漏。在我的自定义ImageBrowserItem中,泄漏非常简单。

作为另一个优化,我从NSImage切换到NSData表示(它消耗更少的内存)。

作为最后一个优化(我将要考虑)是关于缩略图的质量。我想根据缩放值显示不同的拇指质量。你觉得怎么样?