【问题标题】:Calling a static method on a class在类上调用静态方法
【发布时间】:2011-07-21 15:02:49
【问题描述】:

给定一个类似下面的方法,它返回一个类...

-(Class)getClass
{
    return [MyAwesomeClass class];
}

...如何在该类上调用静态方法?我试过这个,但它没有用......

Class theClass = [anInstance getClass];
[theClass someStaticMethod];

我应该如何在theClass 上调用静态方法?

编辑添加: 看来我在做正确的事情,而其他原因导致了崩溃。现在我需要弄清楚如何摆脱找不到方法someStaticMethod 的警告。我应该将theClass 投射到什么位置?

【问题讨论】:

  • 静态方法还是类方法?
  • 对于我目前的使用,一个静态方法,但任何一个都会有用
  • 你的意思是+ classMethod
  • @Richard 和@Radek,很抱歉造成混淆,我所说的静态方法实际上是指 +class 方法。不是 -instance 方法。
  • 你能比“它没有用”更具体吗?你能展示一下'someStaticMethod'的声明和定义吗?

标签: objective-c class methods static


【解决方案1】:

这是一个老问题,但为了完整起见,我回答它。如果您使用 id 而不是 Class 它将起作用

id theClass = [anInstance getClass];
[theClass someStaticMethod];

编译器会对这种动态类型感到满意,但您必须确保 Class 会响应 +someStaticMethod 否则它将在运行时崩溃

【讨论】:

    【解决方案2】:

    假设有问题的课程响应someStaticMethod,您完全按照您编写的方式进行操作。

    如果它不能正常工作,那么很可能是以下情况之一:

    • 你没有你认为的课程
    • 班级没有响应消息
    • 您错误地声明了方法
    • 您尚未导入声明方法的标头
    • 方法本身有问题

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2018-02-15
      相关资源
      最近更新 更多