1

macOS 10.12 までは、次のコードはバックグラウンド スレッドで正常に動作しました。

[nsView lockFocusFocus];
... draw something ...
[[NSGraphicsContext currentContext] flushGraphics];
[nsView unlockFocus];

ただし、10.13 では、flushGraphics はビューのコンテンツをすぐに更新しなくなりました。

バックグラウンド スレッドからの描画が推奨されなくなったことは理解していますが、これはもはや不可能であることを意味するものではありません。実際、 ... draw something ... のすべては、引き続きビューのバッキング ストアに送られます。次回メイン UI スレッドで drawRect: が呼び出されると、ビューが更新され、すべてのコンテンツが適切に配置されます。

これをすぐに実現するにはどうすればよいでしょうか。ビューに変更を加えてすぐに表示する方法はありますか?

4

2 に答える 2