2015-07-01 69 views
1

我目前正在嘗試定義一個方法,它需要一個Class作爲參數,它是特定類型的子類。我目前的實現是:如何指定類的類型

- (void)methodThatNeedsAClassOfSpecialTypeAsInput:(Class)inClass {} 

NSString爲例基類,我已經試過NSString.Class[NSString class]指定參數的類,但

- (void)methodThatNeedsAClassOfSpecialTypeAsInput:([NSString class])inClass { } 

Parse issue: Expected a type編譯。

所以問題是:有可能使一個Class參數類型顯式?或者換句話說:我想我的方法簽名語義上說:我可以採取NSString class,只有一個NSString class作爲參數。

編輯:

答案是:否。

回答

3

你幾乎擁有了:

[NSString class] 

編輯(更新問題後):

這是怎麼了該方法的定義和聲明如下:

- (void)methodThatNeedsAClassOfSpecialTypeAsInput:(Class)inClass { } 

但它被稱爲是這樣的:

[someObject methodThatNeedsAClassOfSpecialTypeAsInput:[NSString class]]; 
+0

我已經嘗試過了。同樣的結果。 – shallowThought

+0

@ShallowThought我只能說這就是它的完成方式。錯誤必須是不同的。如果你用完整的編譯器錯誤信息更新你的問題(使用我的答案中的代碼),那麼我們可以取得一些進展。 – Droppy

+0

謝謝你回到我身邊。答案已更新。 – shallowThought

0

你理解錯了。方法聲明是正確的

- (void)methodThatNeedsAClassOfSpecialTypeAsInput:(Class)inClass; 

比,在地方,你把它

[obj methodThatNeedsAClassOfSpecialTypeAsInput:[NSString class]]; 

如果在執行你需要保證,您inClassNSString,你可以使用

if([inClass isSubclassOfClass:[NSString class]]) { 
    //Do whatever you need 
}