Как я могу загрузить представление NSImage значка для моего приложения?

У меня есть пользовательский файл значков (MyApp.icns), настроенный для моего приложения Cocoa. Как я могу получить доступ к представлению NSImage значка из моего приложения?

Что-то вроде следующего было бы идеально:

NSImage * iconImage = [MyApplication defaultIconAsImage];

Но я уверен, что это не так просто:)

Я могу, конечно, получить путь к файлу значка следующим образом:

NSString * iconPath = [[NSBundle mainBundle]
                       pathForResource:@"MyApp" ofType:@"icns"];

Но мне кажется, что должен быть какой-то стандартный способ доступа к файлу значка для приложения, кроме вызова его по имени, поскольку имя может измениться.

Каков правильный способ сделать это?

Ответ 2

Просто для полноты. Вот как вы получаете значок для любого приложения или файла в вашей системе.

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"];

Передайте путь к набору приложений для значка приложения или путь к файлу для значка, связанного с файлом.

Ответ 3

Обратите внимание, что -[NSApplication applicationIconImage] не возвращает правильный значок, когда пользовательский значок вставлен в приложение. Затем вам нужно сделать:

NSString* appPath = [[NSBundle mainBundle] bundlePath];
NSImage* appIcon = [[NSWorkspace sharedWorkspace] iconForFile:appPath];

(Ссылка на код значка док-станции, который я написал для Chromium: http://src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm)