Вызов статического метода для класса - PullRequest
3 голосов
/ 23 марта 2011

Учитывая метод, подобный приведенному ниже, который возвращает класс ...

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

... как вызвать статический метод для этого класса? Я попробовал это, но это не сработало ...

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

Как мне вызвать статический метод на theClass?

Изменить, чтобы добавить: Кажется, я поступил правильно, и что-то еще стало причиной аварии. Теперь мне нужно выяснить, как избавиться от предупреждения о том, что метод someStaticMethod не найден. Что я должен разыграть theClass?

Ответы [ 2 ]

4 голосов
/ 04 ноября 2014

Это старый вопрос, но я отвечаю на него для полноты.если вы используете id вместо Class, он будет работать

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

Компилятор будет доволен этой динамической типизацией, но вы должны быть уверены, что Class ответит на + someStaticMethod или произойдет сбой во время выполнения

4 голосов
/ 23 марта 2011

Вы делаете это точно так, как написали, предполагая, что рассматриваемый класс отвечает на someStaticMethod.

Если это не работает правильно, то, скорее всего, один из них:

  • У вас нет класса, который вы думаете
  • Класс не отвечает на сообщение
  • Вы объявили метод неправильно
  • Вы не импортировали заголовок, в котором объявлен метод
  • Сам метод глючит
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...