Objective c 将类对象传递给目标C中的函数-对它所表示的类有限制?

Objective c 将类对象传递给目标C中的函数-对它所表示的类有限制?,objective-c,class,Objective C,Class,(这句话我可能说得不太好!) 我想将一个类对象传递到一个目标C函数中: -(void)someMethod:(Class *)classObject { ... 如果我想将参数限制为实现特定协议的类,我知道我可以这样做: -(void)someMethod:(Class<SomeProtocol> *)classObject { ... -(void)someMethod:(类*)类对象{。。。 但是,是否可以对类而不是协议执行相同的操作 要使用经典的“我有一个扩展了Anima

(这句话我可能说得不太好!)

我想将一个类对象传递到一个目标C函数中:

-(void)someMethod:(Class *)classObject { ...
如果我想将参数限制为实现特定协议的类,我知道我可以这样做:

-(void)someMethod:(Class<SomeProtocol> *)classObject { ...
-(void)someMethod:(类*)类对象{。。。
但是,是否可以对类而不是协议执行相同的操作

要使用经典的“我有一个扩展了Animal的Dog类”示例,我是否可以将参数限制为接受[Animal class]和[Dog class],而不是[Cheese class]

提前谢谢!
Matthew

我认为您不能在编译时执行此操作。
类是一种类型,它与
[动物类]
[奶酪类]返回的类型相同
因此编译器永远不会抱怨。如果需要,可以在运行时对其进行限制;如果提供了错误类型的类,则可以引发无效参数异常

- (void) someMethod:(Class *) classObject
{
    if (![classObject isSubclassOfClass:[Animal class]])
        [NSException raise:NSInvalidArgumentException
                    format:@"Wanted an Animal but got %@", NSStringFromClass(classObject)];

    // do whatever.
}

好的,谢谢大家!我有Java背景,所以想要一些类似Java的“类”泛型类型表示法。
classObject
应该有type
Class
而不是
Class*
它应该只是
Class
,而不是
Class*
已经是一个对象指针类型。
Class*
不会像你想象的那样工作