Мне нравится использовать -Weverything
для компилятора, чтобы поймать все возможные предупреждения, но иногда я получаю предупреждения, которые я не хочу исправлять. Как я могу вручную отключить эти конкретные предупреждения по мере их возникновения?
Clang (в Xcode): начните с -Weverything и вручную отключите специальные предупреждения
Ответ 1
Вы можете отключить индивидуальные предупреждения с помощью -Wno-XYZ
, XYZ - это имя функции предупреждения, которая должна быть отключена.
Ответ 2
В 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