我想知道超類是否從我的子類實現了方法A,該子類也實現了方法A,以便我可以安全地從子類調用[超A]而不會發生異常。因爲它總是返回true(因爲我的子類實現了有問題的方法),所以在這種情況下NSObject的respondsToSelector:不起作用。有任何想法嗎?如何找出超類是否也實現了我的子類實現的相同方法?
5
A
回答
12
您可以使用類方法instancesRespondToSelector:
來執行此操作。因此,從子類中,您可以調用[[self superclass] instancesRespondToSelector:@selector(...)]
來確定超類是否實現了您需要的方法。
0
嘗試[[[自我類]超] instancesRespondToSelector:(。)@選擇]]]
[超級respondsToSelector:]調用父類的實現respondsToSelector的,這很可能與當前類的。它確實是而不是檢查超類是否實現該方法。
2
調用[[self superclass] instancesRespondToSelector:@selector(...)]
將不起作用,如果實現它的類被子類化並且該方法在子類類的實例上被調用。 一個解決方案是明確鍵入實現它的當前類的名稱:
[[ExplicitClassName superclass] instancesRespondToSelector:@selector(...)]
相關問題
- 1. 在超類和子類中實現具有相同名稱但不同實現的方法
- 2. 超類共同方法實現
- 3. UIViewController子類的子類 - 我如何避免超級的實現?
- 4. 如何限制子類重寫/實現超類方法
- 5. 找出超類包含的屬性或方法實現
- 6. 在ObjC中,我如何隱藏一個子類中超類方法的實現?
- 7. 如何實現從子類方法
- 8. 是否有即使父類實現相同的接口實現子類中的接口任何好處
- 9. 查找未實現的類方法
- 10. 實現類:找不到超類
- 11. C++在兩個不同的子類中實現了虛擬方法的父類
- 12. 在不同的類中實現相同的方法
- 13. 如何從實現類的方法
- 14. 如何找出某個對象是否實現了特定的方法?
- 15. 如何在實現接口的類中實現靜態方法?
- 16. 多個類實現相同的合同
- 17. 如何發現子類中的方法(參數)是否在已實現的接口中定義了註釋?
- 18. 如何發現哪些類使用Eclipse實現類的方法?
- 19. Java的子類或實現泛型類型相同的邊界
- 20. 確定一個類的超類是否實現了java中的某個接口
- 21. 在類圖中,實現接口的類是否重複了方法名?
- 22. 在一個類中實現超級子接口都(A類實現了超接口,子接口)
- 23. 類3實現我和擴展C,我有一個默認的方法和C有不同的實現相同的方法。哪個實現適用於3?
- 24. UITextView子類化時實現UIScrollView方法
- 25. 如何使用上傳或其他方法從子類實現超類?
- 26. 子類是否也可以是超類?
- 27. 如果我在子類中實現了ISerializable,父類是否也必須這樣做?
- 28. 這個類如何實現「__iter__」方法而不實現「next」?
- 29. 抽象類/方法實現
- 30. 在UIView子類中實現UIResponder觸摸方法是否違反了MVC?
什麼是類方法的等價物?說,我想測試一個類級選擇器是在它的超類還是在子類? – jAckOdE