在init方法中,Objective C可能返回不同類的實例嗎? 我有一個類叫:MyCustomClass。我還有其他兩個不同的課程,分別叫做Class 1
和Class2
。我試圖實現的是:當我打電話[[MyCustomClass alloc] initWithSomeParameters
創建實例Class1
或Class2
取決於某些條件。Objective-C返回不同類的實例,初始化爲
MyCustomClass.m
:
#import "MyCustomClass.h"
#import "Class1.h"
#import "Class2.h"
-(id) initWithSomeParameters: (id) params{
id myClass;
if (someCondition){
myClass = [[Class1 alloc] initWithSomeParameters:(id) params];
[myClass setSomething:something];
}else{
myClass = [[Class2 alloc] initWithSomeParameters:(id) params];
[myClass setSomething:something];
}
return myClass;
}
...後來我打電話
id myCustomClass = [[MyCustomClass alloc] initWithSomeParameters:(id) params];
這是一種錯誤的做法?如果是這樣,那麼正確的是什麼?
可能重複[?到底什麼是所謂的 「類簇」 在Objective-C](http://stackoverflow.com/questions/1844158/what-exactly -is-a-so-called-class-cluster-in-objective-c) – 2013-11-01 13:43:01
是你的MyCustomClass的'Class 1'和'Class 2'子類 – Priyatham51
感謝您的快速回答!不,Class1和Class2不是MyCustomClass的子類。 Class1是UIAlertView,Class2是UIView的子類。 MyCustomClass是NSObject。 –