0
我有幾個從一個超類派生的子類。讓我們稱這個超類爲「classA」。iPhone - 有超類調用子類的方法...(?)
classA的所有子類都有一個名爲doStuff:(id)sender的方法,並且每個類中的每個方法都會相對於該類執行相關操作。
問題是我必須從classA調用doStuff。
我該怎麼做?
我應該聲明doStuff:上CLASSA(ID)發送作爲空方法,像
- (void) doStuff:(id)sender {
}
只是把它正確編譯,然後覆蓋上的子類再次聲明呢?這是正確的方法嗎?
謝謝。
好的,謝謝。我懷疑我必須這樣做,但我不確定。謝謝!!! – SpaceDog 2011-03-23 01:22:32
另一種方法是讓ClassA中的代碼使用自省發送消息,例如'[self performSelector:@selector(doStuff :) withObject:nil]'。如果子類沒有提供實現,那也會引發異常。儘管大部分時間我都會堅持Kendall的建議 - 只是在超類中創建一個空方法。 – jlehr 2011-03-23 02:44:29
我認爲如果意圖是每個子類都有它,最好宣傳它的存在......儘管如果它意味着是一種私有方法,我可以採取任何一種方式。 performSelector:withObject:雖然比直接調用要慢。我幾乎提到使用協議作爲選項,但是當它們繼承時必須標記每個子類似乎是錯誤的。 – 2011-03-23 03:20:11