2012-04-02 41 views
1

我有一些類SimpleButton。這是一個Button類的孩子。 Button類有一些方法,在SimpleButton中被覆蓋。現在,如果我想從simpleButton獲得這種方法,我只需要撥打[super someMethod];但是如何從simpleButton以外訪問它?我試圖通過指向類的對象訪問「超級」

SimpleButton *button; 
[(Button*)button.superclass someMethod]; 

但這不工作...

回答

2

你不能那樣做。如果你已經重寫了子類中的方法,那麼你已經將該類的公共可用方法更改爲實現中的方法。你將不得不有一個單獨的方法,只是調用超級實現:

假設你已覆蓋方法foo。創建一個新的方法,superFoo

[button superFoo]; 

在內部做到這一點:

-(void)superFoo 
{ 
    [super foo]; 
} 

但是,如果你需要做這樣的事情,那麼你可能需要重新考慮你爲什麼覆蓋的方法在第一名。也許你應該在你的子類上有一個新方法,而不是獨立的部分,而是調用超級實現本身,而不是重寫。

+0

Tnx for response。我已經考慮過這個問題,但這有點渺小。看來我應該重新思考我的程序邏輯。 – SentineL 2012-04-02 07:35:35