使用AppKit图像模板常量会产生null

时间:2011-12-25 20:49:44

标签: objective-c macos cocoa nsimage

NSImage的文档列出了许多应使用+[NSImage imageNamed:]提供的标准图片。它们列在NSImage class reference

但是,当我尝试加载以下内容时,我会继续(null),但结果并不仅限于NSImageNameSmartBadgeTemplate。在给出程序包中的图像名称时,代码按预期工作。有什么想法吗?

NSString *filterIconName = @"NSImageNameSmartBadgeTemplate";
_icon = [NSImage imageNamed:filterIconName];
NSLog(@"icon = %@", _icon);

1 个答案:

答案 0 :(得分:6)

标识图像的字符串的内容不一定与字符串的名称相同。您希望使用名称进行分配,如下所示:

NSString *filterIconName = NSImageNameSmartBadgeTemplate;

或直接使用该名称:

[NSImage imageNamed:NSImageNameSmartBadgeTemplate]

您只能在公共标题中看到名称声明:extern NSString * const PeanutButter。当Apple在另一个文件中定义字符串时,该值可以是任何值:

NSString * const PeanutButter = @"Jelly";

如果他们认为有必要,Apple也可以更改字符串的值,只要您只引用该名称,您的代码就会继续有效。