предотвращение неиспользованного предупреждения результата выражения в блоке

Следующий код возвращает предупреждение о неиспользованном выражении при операции присваивания в блоке. Код не очень практичен, но в исключенном разделе гораздо больше кода, и этот код должен выполняться в определенной очереди.

__block NSNumber *pageId=nil;
dispatch_sync(_myDispatchQueue, ^{
    int val;
    //... code generates an int and puts it in val
    pageId = [NSNumber numberWithInt:val];
}];
//pageId used below

Как избавиться от этой ошибки?


person Mark Lilback    schedule 21.01.2012    source источник
comment
Какую версию клана вы используете? Можете ли вы предоставить полный компилируемый тестовый пример?   -  person servn    schedule 22.01.2012


Ответы (1)


Мои экспериментальные выводы

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

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-value"
pageId = [NSNumber numberWithInt:val];
#pragma clang diagnostic pop

Применяется только к области между игнорированием и всплывающим окном. "-Wunused-value" не подавляет неиспользуемые переменные.



Вот как можно подавить неиспользуемые переменные:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
int i = 0;
#pragma clang diagnostic pop



Кроме того, без push и pop, как показано ниже:

#pragma clang diagnostic ignored "-Wunused-value"
pageId = [NSNumber numberWithInt:val];

Тип предупреждения был проигнорирован в любом месте этого файла после #pragma. Кажется, это относится только к рассматриваемому файлу.

Надеюсь, эта статья оказалась для вас полезной,
– Чейз

person csga5000    schedule 08.01.2016