【问题标题】:Correct implementation of NSView drawRect in derived classes在派生类中正确实现 NSView drawRect
【发布时间】:2018-01-15 20:28:57
【问题描述】:

是否需要从覆盖的drawRect中调用[super drawRect:dirtyRect]? 我见过 [super drawRect:dirtyRect]

的例子

根本没有被调用

-(void)drawRect:(NSRect) dirtyRect
{
 // derived class code here
}

在派生类代码之前被调用

-(void)drawRect:(NSRect)dirtyRect
{
 [super drawRect:dirtyRect];
 // derived class code here
}

在派生类代码之后被调用

-(void)drawRect:(NSRect)dirtyRect
{
 // derived class code here
 [super drawRect:dirtyRect];
}

都是正确的(尤其是不调用 super drawRect)按照标准或规范 或者它们恰好在工作并且可能会中断一段时间。我的意思是它是一个简单的继承案例,派生类必须覆盖并考虑基类行为?

参考答案会很有帮助。

【问题讨论】:

    标签: macos cocoa nsview drawrect


    【解决方案1】:

    Per NSView Docs

    默认实现什么都不做。如果子类进行自定义绘图,则应覆盖此方法。

    ...

    如果你的自定义视图是一个直接的 NSView 子类,你不需要调用 super.对于所有其他视图,请在您的实现中的某个时刻调用 super,以便父类可以执行任何额外的绘图。

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多