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

Исключение предупреждения "выражение результат не используется" в блоке

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

__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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Примечание. Я получил это от 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. Это похоже только на файл, о котором идет речь.

Надеюсь, вы нашли это полезным,
    - Chase