Подтвердить что ты не робот

Clang (в Xcode): начните с -Weverything и вручную отключите специальные предупреждения

Мне нравится использовать -Weverything для компилятора, чтобы поймать все возможные предупреждения, но иногда я получаю предупреждения, которые я не хочу исправлять. Как я могу вручную отключить эти конкретные предупреждения по мере их возникновения?

4b9b3361

Ответ 1

Вы можете отключить индивидуальные предупреждения с помощью -Wno-XYZ, XYZ - это имя функции предупреждения, которая должна быть отключена.

Ответ 2

XCode

В XCode 5 мне нужно было создать, затем щелкнуть правой кнопкой мыши по проблеме и выбрать "Reveal in Log", а затем установить вкладку "Средняя панель" на "Все", чтобы получить проблемы, отображаемые в журнале.

Затем нажмите значок "Гамбургер" справа и прокрутите вниз. Наконец, я получил точное описание предупреждения.

/.../SettingsViewController.m:91:58: warning: creating selector for nonexistent method 'setSegueIdentifier:' [-Wselector]
    [segue.destinationViewController performSelector:@selector(setSegueIdentifier:)

Так что в моем случае следующее выполняет эту работу.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wselector"
...
#pragma clang diagnostic pop

Ответ 3

Я просто столкнулся с сайтом, в котором перечислены все предупреждения Clang и флаги, которые их отключили (используя #pragma clang diagnostic ignored "-Wxyz"):

http://goo.gl/hwwIUa (при посещении вы поймете, почему я сократил URL-адрес).

Ответ 4

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

#ifdef TESTFLIGHT_USERTRACKING

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdeprecated-implementations"

[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];

#pragma clang diagnostic pop

#endif