有什麼方法可以在運行時發現給定類中存在哪些子類?在Obj-C中發現給定類的子類
編輯:從目前爲止的答案,我想我需要澄清一點,我正在嘗試做什麼。我知道這在Cocoa中並不常見,並且可能會帶來一些警告。
我正在使用動態創建模式編寫解析器。 (請參閱Buck和Yacktman的Cocoa Design Patterns一書,第5章。)基本上,解析器實例處理堆棧,並實例化知道如何執行特定計算的對象。
如果我可以得到MYCommand
類的所有子類,例如,我可以爲用戶提供可用命令的列表。另外,在第5章的例子中,解析器有一個替換字典,因此可以使用+, - ,*和/等運算符。 (它們被映射到MYAddCommand
等等)對我來說,似乎這些信息屬於MyCommand
子類,而不是解析器實例,因爲它有點違背了動態創建的想法。
這看起來確實是正確的方式。特別是因爲文檔中提到一個類的'+ load'方法在其所有超類的「+ load」方法之後被調用。 非常感謝其他人提供的答案,但他們的答案也很好。 – 2009-11-28 16:23:02
MyCommand的子類不會在其超類上調用+加載。 +只在實現它的類中調用load。 – 2014-03-19 20:44:53
驚訝花了這麼長時間有人糾正我!我通常同意這裏的答案,即自動註冊是一個壞主意,應該多處理一點手動。 – 2014-03-22 13:09:38