作爲一個例子,當我使用NSMutableDictionary時,我知道它繼承了NSDictionary的所有方法,但是如何知道/相信它已經重寫了這些方法的行爲,如果我想使用NSDictionary方法(例如+dictionaryWithObjectsAndKeys
)創建我的可變字典實例?如何知道在NS子類中使用父方法是否安全?
更一般地說,框架的責任是確保子類不會盲目地繼承可能會破壞子類實例的方法(如果使用的話)?或者編碼者有責任知道不使用它們?如果從Rectangle
,並通過繼承Square
繼承我可以叫
Square *newSquare = [[Square alloc] init];
[newSquare setWidth:3 andHeight:6]; //instead of -(void)setSide:(int)side
我有「破」廣場等方法依賴於寬度等於高度將現在無法正常工作。遊戲的規則是什麼?
感謝您的回答;如果我可能要求澄清,當我實施我自己的子類時,這個原則很容易遵循。然而,我仍然有點困惑,關於什麼/哪裏(docs/headers?)這些規則適用於Foundation類。在我的NSMutableDictionary示例中,我知道NSDictionaryCreation類別中的方法是由NSMutableDictionary繼承的,但這是否意味着NSDictionaryCreation類別方法應該被認爲是「公共」的並且可以安全地用於NSMutableDictionary?由於我不是這些班級的創造者,所以我很無奈。 – snackdefend 2010-09-02 05:26:28
這是一個我們需要忍受的問題,因爲我們無法訪問某些類的實現,所以我們只能假定它們實現/尊重他們的所有超類,否則他們會拋出一個錯誤,指出請求的方法不是支持的。 – vfn 2010-09-02 05:46:05
再次感謝。對於我來說,使用這種來自開放的實現語言的操作感覺不太舒服。因此,爲了重述您的答案,也許我可以說「總是測試您的遺傳基金會代碼」? :) – snackdefend 2010-09-02 05:50:55