Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Mac OSX 10.9.4中的应用程序图标在运行时未更改_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c Mac OSX 10.9.4中的应用程序图标在运行时未更改

Objective c Mac OSX 10.9.4中的应用程序图标在运行时未更改,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我正在做一个项目,需要在运行时更改应用程序图标。我已将默认图标icns设置为默认应用程序图标 现在,当我想更改应用程序的图标时,我在Appdelegate.m类中使用下面的代码段 NSString *iconPath = @“ ICON_PATH/new_icon_file.png ”; NSImage *icon =[[NSImage alloc] initWithContentsOfFile:iconPath]; if (icon != nil) { NSLog(@“Changin

我正在做一个项目,需要在运行时更改应用程序图标。我已将默认图标icns设置为默认应用程序图标

现在,当我想更改应用程序的图标时,我在Appdelegate.m类中使用下面的代码段

NSString *iconPath = @“ ICON_PATH/new_icon_file.png ”;
NSImage *icon =[[NSImage alloc] initWithContentsOfFile:iconPath];

if (icon != nil)
{
    NSLog(@“Changing App icon");
    [NSApp setApplicationIconImage:icon];
}
当我在10.9.4 OSX上运行这个项目时,应用程序图标在运行时不会改变,直到我重新启动我的Mac机器。 重新启动mac计算机后,应用程序的默认图标将替换为新图标文件

但上述代码片段在10.8 Mac OSX之前运行良好,不需要重新启动Mac机器,并且在执行代码中的“[NSApp SetApplicationImage:icon]”行之后。默认\u图标将替换为新的\u图标\u文件

如果在运行时更改应用程序图标的上述代码段有任何问题,请更正我??或者,在10.9 Mac OSX中,有没有其他方法可以在运行时更改AppIcon


谢谢。

此方法不用于更改finder应用程序图标

文档状态:
“…临时更改dock应用程序磁贴中的应用程序图标。”

因此,如果它起作用,那就是一个bug/至少是未指明的行为


有效的方法是设置应用程序目录的图标:

使用
NSWorkspace

-(BOOL)setIcon:(NSImage*)image for file:(NSString*)完整路径选项:(NSWorkspaceIconCreationOptions)选项

我头顶的示例

[[NSWorkspace sharedWorkspace]设置图标:[[NSBundle mainBundle]bundlePath]选项:0]

在船坞中它会改变吗?该方法不用于在finder中更改它,而仅用于dock@Daij-Djan我不想在dock上显示应用程序图标,所以我在info.plist中为应用程序是代理(UIElement)设置了“是”。但它是在10.8或更早版本的OSX上工作的。删除了xcode标记,因为它不是IDE特定的。您能建议我如何更改MacOSX 10.9中的finder应用程序图标吗?@varun是否同时更新了dock图标?当我以编程方式替换.app中的图标图像,然后切换“Keep in Dock”时,会使Dock图标将其图标更新为新图标,但我不知道如何以编程方式切换“Keep in Dock”@Noitidart No。我现在不更新Dock图标。就这么过去吧。也许它会帮助你解决你的问题。