加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:39:07 所属栏目:百科 来源:网络整理
导读:我需要在类型为Class的变量上调用类方法,我知道它包含基类的子类MyBaseClass … - (void)foo:(Class)clazz { // Now i want to call +myClassMethod on clazz} 我不知道这是否真的可行.如果是,是否有更安全的方法来保证clazz实际上是MyBaseClass的子类? 提
我需要在类型为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.
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读