首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法是类方法还是实例方法?

方法是类方法还是实例方法?
EN

Stack Overflow用户
提问于 2014-02-21 15:51:50
回答 1查看 144关注 0票数 2

在我的代码中,我想知道方法是类方法还是实例方法。我目前使用的代码工作,但我想知道是否有更好的方式。

如果是类方法或实例,当前要“检测”的代码:

代码语言:javascript
复制
Method method = class_getInstanceMethod(class, selector);
if (method) {
  __strong Class object = [[class alloc] init];
  objc_msgSend(object, selector);
}else {
  method = class_getClassMethod(class, selector);
  if (method) {
    objc_msgSend(class, selector);
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 15:58:00

除了两个if语句之外,几乎没有什么可以改进的。您可以使用respondsToSelector:方法,但是由于您一开始没有对象,所以您将在if中得到一个if,而不是一个更好看的else if

代码语言:javascript
复制
if ([class respondsToSelector:selector]) {
    // Call class method
} else {
    id object = [[class alloc] init];
    if ([object respondsToSelector:selector]) {
        // Call instance method
    }
}

如果您可以修改您的程序流,使其从对象而不是类开始,则可以这样做:

代码语言:javascript
复制
if ([object respondsToSelector:selector]) {
    // Call instance method
} else if ([[object class] respondsToSelector:selector]) {
    // Call class method
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21938989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档