我需要在 Class 类型的变量上调用一个类方法,我知道它包含一个基类 MyBaseClass 的子类...
- (void)foo:(Class)clazz {
// Now i want to call +myClassMethod on clazz
}
我不知道这是否真的可能。如果是,是否有更安全的方法来保证 clazz 实际上是 MyBaseClass 的子类?
提前致谢
最佳答案
您可以使用 -respondsToSelector:
,就像使用任何 Objective-C 对象一样。您还可以使用 +isSubclassOfClass:
来测试该类是否是另一个类的子类。
- (void)foo:(Class)clazz
{
if ([clazz respondsToSelector:@selector(myClassMethod)])
{
[clazz myClassMethod];
}
else
{
// clazz does not implement that class method.
}
if ([clazz isSubclassOfClass:[MyBaseClass class]])
{
[clazz myClassMethod];
}
else
{
// clazz is not a subclass of MyBaseClass.
}
}
关于Objective-C 在 Class 变量上调用类方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8468980/