2012-09-23 43 views
0

在Objective-C,我們可以有一個類Foo和Bar類,然後像做在Objective-C中,我們可以有一個泛型或基類引用來調用不同的類方法嗎?

Class aClass = [Foo class]; 
[aClass getURLString]; 

其中getURLString是Foo類或酒吧的一個類的方法。換句話說,根據類調用不同的類方法,並且此類由變量引用。

Foo和Bar在本例中具有與NSObject相同的基類。我嘗試使用上面的代碼,它不會工作。如果我使用

id aClass = Foo; 

id aClass = [Foo class]; 

它不會工作。我必須實例化一個虛擬對象嗎? Objective-C可以不經實例化嗎?

+1

你是什麼意思「它不工作」?編輯:另外,'Class'和'id'是不兼容的類型,我不認爲(可能要看那部分) –

+0

@CarlVeazey Class和id確實兼容,它是Obj-C的一個定義特徵:類是對象。例如,你可以有一個類的NSArray;你可以使用-respondsToSelector:查看一個類對象響應給定的類方法;你可以覆蓋類方法。 – Darren

+0

沒關係,它們是兼容的類型,我的錯誤。 –

回答

2

你正在嘗試應該工作正常。例如,下面的工作:

Class NSStringClass = [NSString class]; 
NSString *string = [NSStringClass string]; 

難道你忘了#importFoo的定義是什麼?

+0

hm,應該是我定義了類方法,但是沒有將它包含在'.h'中......所以現在它似乎工作。 –

相關問題