Сохраните NSImage, который содержит значок, в виде файла TIFF (используйте NSData* tiff = [image TIFFRepresentation];
, чтобы создать NSData с файлом TIFF, а затем просто используйте [tiff writeToFile:tiffFile atomically:YES];
, чтобы сохранить его в некоторой папке), затем используйте NSTask для преобразования TIFF.файл в файл ICNS, используя tiff2icns
.
tiff2icns /Users/Me/Desktop/pic.tiff /Users/Me/Desktop/pic.icns
Теперь приведем пример полного кода (изображение представляет собой файл NSImage, значок, а iconFile - строку NSS с окончательным расположением icns):
NSString* tiffFile = [NSString stringWithFormat:@"%@.tiff",iconFile];
NSData* tiff = [image TIFFRepresentation];
[tiff writeToFile:tiffFile atomically:YES];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/tiff2icns"];
[task setArguments:[NSArray arrayWithObjects:tiffFile, iconFile, nil]];
[task launch];
[task waitUntilExit];
[[NSFileManager defaultManager] removeItemAtPath:tiffFile error: NULL];
И все.