これは、1 ピクセルあたり 32 ビットの一時ビットマップを malloc してから、for ループでアルファ コンポーネントをクリアし、最後に再び NSImage に戻すことで実行できます。
NSColor とNSCompositingOperationの巧妙な組み合わせを使用して、より簡単な方法で実行できると思います。あるいは、drawAtPoint を使用して画像をそれ自体と合成する必要があるかもしれません。
私のコードは次のようになります。
NSImage* img = some image with RGB and Alpha;
NSRect rect = some rect inside the image;
[img lockFocus];
[[NSColor clearColor] set];
NSRectFillUsingOperation(rect, NSCompositeXOR);
[img unlockFocus];
注: アルファ チャネルを 1 に設定するには、NSCompositePlusLighter で blackColor を使用します。
アルファチャンネルクリアの秘密とは?