Objective-C 在类变量上调用类方法

标签 objective-c class

我需要在 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 在类变量上调用类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468980/

相关文章:

python - 实例化类时在数据类内部创建时间戳

class - 在 LaTeX 中编写类和样式文件的教程/手册?

c++ - 在类的构造函数中初始化映射时如何避免内存泄漏?

iphone - 用于邮件联系人的 UITableView

ios - 启用内容插入的 UIScrollView 分页工作异常

iphone - [[UIScreen mainScreen] bounds] 返回值是否响应方向?

excel - 运行时的对象属性

python - 覆盖 Python 类 __str__ 方法的最佳方法是什么?

arrays - 如何在 Objective-C 中的 "dynamic NSArray"中添加 null 或 nil 值

objective-c - 在 Core Foundation 中保留和 "autoreleasing"