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

pic*_*ick 2 macos cocoa objective-c nsimage

该文档NSImage列出了许多应该随时可用的标准图像+[NSImage imageNamed:].它们列在NSImage类引用中.

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

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

Jos*_*ell 6

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

NSString *filterIconName = NSImageNameSmartBadgeTemplate;
Run Code Online (Sandbox Code Playgroud)

或者直接使用名称:

[NSImage imageNamed:NSImageNameSmartBadgeTemplate]
Run Code Online (Sandbox Code Playgroud)

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

NSString * const PeanutButter = @"Jelly";
Run Code Online (Sandbox Code Playgroud)

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