我有一個UIViewCustom類有7個孩子。 孩子的每個有自己的類函數用於幫助在一個UITableView我選擇的類別和功能的一個啓動NSClassFromString(MyClassName)比調用MyClass的類函數
+(int) minHeight;
+(int) minWidth;
「-insertNewObjectWithClassName:(的NSString *)childClassName」被調用。
在此功能,我想這取決於在類名來創建實例,所以我tryed
Class *class = NSClassFromString(childClassName);
CGRect frame = CGRectMake(0, 0, [class minWidth], [class minWidth])
MotherClass *view = [[class alloc] initWithFrame:frame];
但不幸的是靜態函數不能被調用。
有沒有辦法,說編譯器,該類不只是一個類,但也是一個MotherClass告訴他的功能?
非常感謝你!
編輯: 警告:語義問題:方法-minWidth'未找到(返回類型默認爲 '身份證')
SOLUTION:Class類,而不是類*類
謝謝你,你是我的英雄!警告已經離開 – Seega
很高興我可以幫助:D – Sam
這將工作,但協議是矯枉過正。我會去抽象基類,並簡單地聲明'class'是'MyAbstractBase * class'。這是更清晰和更具指示性的意圖;協議的功能分佈在類層次結構中。在這種情況下,你們所有的自定義類都以「UIView」的一個基本子類爲根源(我猜測UIView)。 – bbum