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