【发布时间】:2026-01-31 01:50:01
【问题描述】:
要加载图标图像,我在其中一种方法中有以下代码:
NSLog(@"icon path: %@", iconPath);
NSImage *iconImage = [[NSImage alloc] initWithContentsOfFile:iconPath];
return iconImage;
从日志输出中可以清楚地看出,图像资源是从正确的位置打开的。我没有看到错误。然而,我打开的 tif 文件在调试器中显示为空 NSSize (width=0, height=0),并显示在屏幕上,好像我指向某个失控的内存段。
Flags主要设置为0。例外的是colorMatchPreferred和multipleResolutionMatching设置为1。
Reps 指向一个数组 (NSArrayM *),其中包含两 (2) 个位图表示(NSBitmapImageRep 条目)。
请指教我做错了什么!
谢谢
【问题讨论】:
-
请包括完整的异常文本和堆栈跟踪。
-
没有异常,因此没有堆栈跟踪。
-
好的,我对“例外情况是 colorMatchPreferred 和 multipleResolutionMatching 设置为 1”的说法感到困惑。
-
先用 NSData 加载内容,然后使用 [NSImage initWithData:]。有一些缓存机制。
-
我尝试使用:NSData *iconImageData = [NSData dataWithContentsOfFile:iconPath]; NSImage *iconImage = [[NSImage alloc] initWithData:iconImageData];它表明我的数据确实正在加载。加载的字节数因图像而异。这似乎很好。然而,这种变化并没有影响最终结果。大小仍然是 0x0,并且正在显示一些时髦的东西。
标签: objective-c macos cocoa nsimage