是 - [NSView setsNeedsDisplay:]一个同步调用?

时间:2013-08-04 20:09:40

标签: objective-c cocoa nsview

我在Mac OS X应用程序中有一个NSView自我绘制。当我准备好实现这一点时,我通过电话请求它:

[self.imageRenderedView setNeedsDisplay:YES];

我的问题是,这个电话会阻止吗?也就是说,它是同步的吗?我可以假设在后续语句执行时已经发生了绘图吗?这个假设似乎对我有用,但我觉得它有点不安全。

1 个答案:

答案 0 :(得分:8)

setNeedsDisplay:仅调用标记视图,因为需要通过设置进行显示 视图对象中的标志。 因此它返回的速度非常快,但是当方法返回时,绘图仍然没有

来自documentation

  

每当用于绘制视图对象的数据或状态发生变化时,   视图应发送setNeedsDisplay:消息。标记了NSView个对象   因为需要显示会在每次传递时自动重新显示   应用程序的事件循环。 (查看需要重新显示的对象   在事件循环到来之前,当然可以立即发送   适当的display...方法。)