3
在Java中,我們可以實例化一個對象(只知道參數的類型)動態如下:動態實例化對象的Objective-C
Class<?> msgClass = Class.forName(className);
constructor = msgClass.getConstructor(String.class, String.class,
String.class);
MyClass myClass = (MyClass) constructor.newInstance(myString, myString2, myString3);
pubic class MyClass{
public MyClass(String s, String s2, String s2){}
}
有沒有辦法做到在Objective-C一樣,只知道參數類型傳遞給objective-c類構造函數。
在此先感謝。
所以,如果我不知道構造函數/方法/選擇器之類的名字,那麼我真的即使我知道參數,也無法調用它。有沒有根據可以採用的參數來查找選擇器? – Unis
如果你知道參數,爲什麼你不知道選擇器?消息發送在Obj-C中是動態的,選擇器是*標識你正在調用的方法的東西*。 (它不像Java,你可以說「讓我有三個params的ctor」 - 可能有多個以「init ...」開頭的東西,看起來像這樣,你想知道哪個你打電話。)看看上面鏈接的運行時文檔。您可以使用'class_copyMethodList'函數遍歷方法,並檢查它們的名稱,選擇器和參數等。 –
我同意你的觀點,我應該知道選擇器名稱,但是在我設計我的類的情況下具有相同名稱但不同參數類型的多個選擇器(init)正在被傳遞。我如何區分它們之間的區別?我希望我很清楚,並感謝您的幫助。 – Unis