簡體   English   中英

在派生類中正確實現NSView drawRect

[英]Correct implementation of NSView drawRect in derived classes

是否有必要從重寫的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) 或者它們恰好正在工作並且可能會花一些時間。 我的意思是這是繼承的簡單情況,在這種情況下,派生類必須優先考慮保持基類的行為嗎?

參考答案將是有幫助的。

根據NSView文檔

默認實現不執行任何操作。 如果子類進行自定義繪制,則它們應重寫此方法。

...

如果您的自定義視圖是直接的NSView子類,則無需調用super。 對於所有其他視圖,請在實現中的某個時刻調用super,以便父類可以執行任何其他繪制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM