如何指定Class类型的类型

时间:2015-07-01 12:30:24

标签: objective-c

我目前正在尝试定义一个方法,该方法以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作为参数。

修改

答案是:否。

2 个答案:

答案 0 :(得分:3)

你几乎拥有它:

[NSString class]

编辑(问题更新后):

这是定义和声明方法的方法:

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

但它被称为:

[someObject methodThatNeedsAClassOfSpecialTypeAsInput:[NSString class]];

答案 1 :(得分:0)

你弄错了。方法声明是对的

[obj methodThatNeedsAClassOfSpecialTypeAsInput:[NSString class]];

比,你称之为

inClass

如果在实施中您需要保证,NSStringif([inClass isSubclassOfClass:[NSString class]]) { //Do whatever you need } ,您可以使用

String result = document.toXML().toString();