То, что вы хотите сделать, уже доступно в явном виде. См. Раздел «API перенаправления чертежей NSView» в заметках о выпуске 10.4 AppKit.
Создайте NSBitmapImageRep для кэширования и очистите его:
NSGraphicsContext *bitmapGraphicsContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:cacheBitmapImageRep];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:bitmapGraphicsContext];
[[NSColor clearColor] set];
NSRectFill(NSMakeRect(0, 0, [cacheBitmapImageRep size].width, [cacheBitmapImageRep size].height));
[NSGraphicsContext restoreGraphicsState];
Кеш к нему:
-[NSView cacheDisplayInRect:toBitmapImageRep:]
Если вы хотите более широко рисовать в заданном контексте обработки рекурсии и прозрачности представления правильно,
-[NSView displayRectIgnoringOpacity:inContext:]