我无法使用 imageNamed 但 initWithContentsOfFile 创建 NSImage

Posted

技术标签:

【中文标题】我无法使用 imageNamed 但 initWithContentsOfFile 创建 NSImage【英文标题】:I cannot create NSImage with imageNamed but initWithContentsOfFile 【发布时间】:2013-03-05 10:36:50 【问题描述】:

使用以下代码:

NSString *imageString = [[NSBundle mainBundle] pathForResource:@"logo64x64" ofType:@"png"];
NSImage *testImage = [[NSImage imageNamed:@"logo64X64"] retain];
NSImage *testImage2 = [[NSImage alloc] initWithContentsOfFile:imageString];

testImage 是 nil 但 testImage2NSImage 实例。我不知道代码有什么问题。我确定我可以在包的资源目录中找到logo64x64.pnglogo64x64@2x.png。我也尝试过imageNamed:@"logo64X64.png",但仍然为零。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

试试

[NSImage imageNamed:@"logo64x64"];

而不是

[NSImage imageNamed:@"logo64X64"];

请注意,在成功的代码中,您使用了小写的x,而在失败的代码中,您使用了大写的X (logo64X64)。 NSBundle 区分大小写,即使底层 HFS+ 文件系统仅保留大小写。 (NSImage+imageNamed:方法使用NSBundle定位资源)。

【讨论】:

非常感谢。为我的粗心感到羞耻。然后好像是not a real question :) 哈哈 不错的观察。第一眼没看懂。

以上是关于我无法使用 imageNamed 但 initWithContentsOfFile 创建 NSImage的主要内容,如果未能解决你的问题,请参考以下文章

UIImage imageNamed 不使用 xcode 4.4 显示图像

UIImage + NSCache 与 [UIImage imageNamed:]

无法使用 GDI+ 保存 TIF 文件

ios8 UIImage imageNamed:崩溃

iOS4 调用 ImageNamed:仍然泄漏或导致内存问题?

内存分配