部分的に推測であり、実装の詳細に関連する私の理解は次のとおりです。
NSImage
Dock は別のプロセスで実行され、プロセスの境界を越えてアプリケーションから Dock に任意のものを簡単に渡すことはできません。適切に渡すことができるイメージは、標準のシステム アイコンとリソース バンドル内のアイコンの 2 種類だけです。NSImage
しかし、これらのいずれかが機能するために必要な呪文はないと思います。
したがって、Carbon を使用する必要があります。具体的には、 (で取得したCarbon をカバー) または(アプリケーションバンドルの Resources フォルダー内のファイルを参照する) のSetMenuItemIconHandle
いずれかで使用する必要があります。kMenuSystemIconSelectorType
IconRef
GetIconRef
kMenuIconResourceType
CFString
.icns
関連するヘッダーは<HIToolbox/MacApplication.h>
(の場合GetApplicationDockTileMenu
)、<HIToolbox/Menus.h>
(の場合SetMenuItemIconHandle
)、および<HIServices/Icons.h>
(GetIconRef
システム アイコンを使用している場合は の場合) です。
テストされていませんが、次のようになります。
#include <Carbon/Carbon.h>
SetMenuItemIconHandle(
GetApplicationDockTileMenu(),
[dockMenu indexOfItem:dockMenuItem],
kMenuIconResourceType,
(Handle) CFSTR("icon.icns")
);
これほど単純ではないかもしれません。これの一部は 32 ビットのみである可能性があります。