Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 直接在CALayer.drawInContext中渲染的层支持NSView性能:_Cocoa_Calayer_Nsview_Nsscrollview - Fatal编程技术网

Cocoa 直接在CALayer.drawInContext中渲染的层支持NSView性能:

Cocoa 直接在CALayer.drawInContext中渲染的层支持NSView性能:,cocoa,calayer,nsview,nsscrollview,Cocoa,Calayer,Nsview,Nsscrollview,我在NSScrollview中包含了许多层备份视图,并且主要关注滚动性能。documentView及更高版本是分层备份的,因此它们的子视图也是分层备份的 以下是显示/渲染代码可以到达的三个自然位置: 覆盖NSView.wantsUpdateLayer以返回false(或由于这是默认设置而不执行任何操作)&在NSView的drawRect方法中执行绘图 覆盖NSView.WANTSUPDatalayer以在NSView的updateLayer方法中返回true并绘制图形 在NSView中根本不绘制

我在
NSScrollview
中包含了许多层备份视图,并且主要关注滚动性能。
documentView
及更高版本是分层备份的,因此它们的子视图也是分层备份的

以下是显示/渲染代码可以到达的三个自然位置:

  • 覆盖
    NSView.wantsUpdateLayer
    以返回false(或由于这是默认设置而不执行任何操作)&在NSView的
    drawRect
    方法中执行绘图
  • 覆盖NSView.WANTSUPDatalayer以在NSView的
    updateLayer
    方法中返回true并绘制图形
  • NSView
    中根本不绘制&在CALayer的
    drawInContext
    方法中执行所有绘制
  • 从WWDC 2013会话215讨论中可以看出,(2)比(1)性能更好,因为视图不需要为drawRect输出创建临时存储。首先,我没有100%清楚地说明什么时候做“后备存储”,什么时候不做,第二,(2)和(3)是如何比较的,什么时候可以使用其中一个

    特别是,我必须在我的视图中绘制文本在updateLayer调用中,我将如何执行此操作?绘图文本的唯一示例似乎需要掌握上下文-这在
    updateLayer
    中自然不可用