Можно ли подавить предупреждения компилятора для конкретных задач? - PullRequest
2 голосов
/ 03 августа 2009

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

        if (self.myDelegate != nil) {
            BOOL callDelegate = [self.myDelegate respondsToSelector:@selector(fooDidHappen:WithBar:)];
            if (callDelegate) {
                [self.myDelegate fooDidHappen:foo withBar:bar];
            }
        }

Как вы можете видеть, я спрашиваю, отвечает ли делегат на этот селектор.Но в блоке if, который вводится только тогда, когда на него отвечает делегат, я получаю глупое предупреждение, что делегат не отвечает.Конечно, это не так, потому что этот код использует все преимущества только во время выполнения.Однако продолжать работу с предупреждениями компилятора в xcode - это очень плохая практика, поэтому я хотел бы сказать компилятору просто игнорировать это.

Например, в PHP вы можете написать @anFunction (foo);и @ убедится, что эта функция вообще не выдает никаких предупреждений.Так есть ли директива или команда компилятора, которые можно вводить вокруг этой части, чтобы избавиться от предупреждения?

Ответы [ 2 ]

6 голосов
/ 03 августа 2009

В другом вопросе люди точно сказали вам, как исправить это предупреждение, вы объявляете формальный протокол для делегата и добавляете этот протокол в объявление свойства делегата.

Сказав это, если вы хотите подавить предупреждение, вы можете использовать прагму диагностики GCC:

//Turn the warning off
#pragma GCC diagnostic ignored "-Wundeclared-selector"
if (self.myDelegate != nil) {
  BOOL callDelegate = [self.myDelegate respondsToSelector:@selector(fooDidHappen:WithBar:)];
  if (callDelegate) {
    [self.myDelegate fooDidHappen:foo withBar:bar];
  }
}

//Turn the warning back on
#pragma GCC diagnostic warning "-Wundeclared-selector"

Обратите внимание, что для этого требуется GCC 4.2.1+ или CLANG (и у clang есть, как мне кажется, версия улучшенная , но я могу быть предвзятым, так как написал для нее патч).

0 голосов
/ 26 марта 2011

Для первоначального вопроса о том, как подавить определенные предупреждения, есть файл xconfig, который, я думаю, сделает это, хотя я не нашел какой-либо конкретной документации (не выглядел достаточно усердно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...