Objective-C对Class变量的调用类方法

Rei*_*haw 3 class objective-c

我需要在类型为Class的变量上调用类方法,我知道它包含基类的子类MyBaseClass ...

- (void)foo:(Class)clazz {
  // Now i want to call +myClassMethod on clazz
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否真的可行.如果是,是否有更安全的方法来保证clazz实际上是MyBaseClass的子类?

提前致谢

Dar*_*ren 6

您可以-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.
    }
}
Run Code Online (Sandbox Code Playgroud)