我的項目將被編譯爲一堆遺留代碼(> 100個獨立方法)。所有不同的傳統方法都會在我的項目中達到相同的目的,他們只是做得不同。也就是說,它們都具有大致相同的輸入和相同的輸出,但是它們進行一些非常複雜的計算以獲得這些輸出,並且這些計算在不同方法之間可能會有很大差異。我希望只需在給定會話中調用其中一個方法,但下一個會話可能需要調用其他方法。在我的項目中,當我打算調用其中一種方法時,用戶將輸入足夠的信息,以便我能夠確定要調用哪種方法。動態方法在運行時調用
我可以處理這個問題的一種方法是使用巨大的if
塊。我將不得不檢查幾個不同的條件。對於每個條件的組合,我會調用一個不同的傳統方法。這種方法的問題在於,從可讀性的角度來看,它會非常糟糕 - 實際上,如果塊的長度可能會達到100行。我想,也可能會有許多不同的其他性能問題,如if語句。
我想要做的是創建一個查找表,其中存儲要調用的方法的名稱(以字符串形式),並將其與需要檢查的不同條件進行配對。我的公司正在試圖將其政策轉向使用更多的查找表和更少的巨大if
區塊。
有沒有辦法根據我從查找表中找回的「方法名稱」字符串調用方法?如果是這樣,那麼這樣的語法看起來像什麼?或者還有其他(更好的)方法來處理這個我沒有想到的方法嗎?或者,這個巨大的if
區塊實際上更符合最佳實踐?
呃,爲什麼我在做這件事時沒有出現[此鏈接](http://stackoverflow.com/questions/4446883/objective-c-calling-method-dynamically-with-a-string?rq=1)我的眼鏡還是在我打字的時候?我認爲這就是我正在尋找的東西 - 要試用它,會刪除我的問題,並且如果它能正常工作,請上傳關聯的問題。 – GeneralMike
performSelector可能工作,但它的一個限制是,您無法附加儘可能多的參數,因爲您可能需要。 – Brandon