iconForFile]返回带有0表示的图像

时间:2011-03-08 13:01:44

标签: cocoa nsimage

My Cocoa应用程序显示给定文件夹中所有文件的文件图标。我正在使用此代码来获取图标图像:

NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:thePath];

偶尔,返回的图标没有(0)图像表示,但大小设置为32x32(文档说明的默认大小),其他时候返回正确的图标(如Finder中所示)。 p>

我曾经检查nil,但我的应用程序会崩溃,直到我发现图像为“空”,可以这么说。

当它发生时,它始终是同一个文件:一个Safari .webarchive(该文件夹有两个webarchives,图标显示第一个...)。

上面的代码有什么特别之处吗?这是在后台线程中运行的。这可能是问题吗?我无法想象为什么它应该是一个问题,因为没有从该线程更新UI元素。

谢谢!标记

2 个答案:

答案 0 :(得分:0)

听起来你必须在失败时检查一些条件,即尺寸== NSZeroSize或图像代表的数量是零等等......然后在返回的NSImage是准备好的占位符图像时无效。

答案 1 :(得分:0)

  

这在后台线程中运行。这可能是问题吗?

docs for NSWorkspace iconForFile:状态:

  

讨论

     

返回的图像的初始大小为32像素乘32像素。

     

从应用程序的任何线程调用此方法都是安全的。

因此后台线程应该没有问题。