My Cocoa应用程序显示给定文件夹中所有文件的文件图标。我正在使用此代码来获取图标图像:
NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:thePath];
偶尔,返回的图标没有(0)图像表示,但大小设置为32x32(文档说明的默认大小),其他时候返回正确的图标(如Finder中所示)。 p>
我曾经检查nil
,但我的应用程序会崩溃,直到我发现图像为“空”,可以这么说。
当它发生时,它始终是同一个文件:一个Safari .webarchive
(该文件夹有两个webarchives,图标显示第一个...)。
上面的代码有什么特别之处吗?这是在后台线程中运行的。这可能是问题吗?我无法想象为什么它应该是一个问题,因为没有从该线程更新UI元素。
谢谢!标记
答案 0 :(得分:0)
听起来你必须在失败时检查一些条件,即尺寸== NSZeroSize或图像代表的数量是零等等......然后在返回的NSImage是准备好的占位符图像时无效。
答案 1 :(得分:0)
这在后台线程中运行。这可能是问题吗?
docs for NSWorkspace iconForFile:
状态:
讨论
返回的图像的初始大小为32像素乘32像素。
从应用程序的任何线程调用此方法都是安全的。
因此后台线程应该没有问题。