dispatch_block_create - «Нет соответствующей функции для вызова dispatch_block_create» - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь создать блок с помощью dispatch_block_create в .mm файле

dispatch_block_t testBlock = dispatch_block_create(0, ^{
    NSLog(@"Hello");
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1), dispatch_get_main_queue(), testBlock);
dispatch_block_cancel(testBlock);

И Xcode жалуется:

Нет соответствующей функции для вызова dispatch_block_create

Я даже пытался добавить:

#import <dispatch/block.h>

1 Ответ

0 голосов
/ 02 января 2019

Вы пропустили важную часть ошибки компилятора.Я получаю:

foo.mm:6:34: error: no matching function for call to 'dispatch_block_create'
    dispatch_block_t testBlock = dispatch_block_create(0, ^{
                                 ^~~~~~~~~~~~~~~~~~~~~
/usr/include/dispatch/block.h:171:1: note: candidate function not viable: no known conversion from 'int' to 'dispatch_block_flags_t' for 1st argument
dispatch_block_create(dispatch_block_flags_t flags, dispatch_block_t block);
^
1 error generated.

Важнейшей частью является «функция-кандидат недопустима: нет известного преобразования из« int »в« dispatch_block_flags_t »для 1-го аргумента» .Это связано с более строгой проверкой типов (Objective-) C ++.Вам нужно явно привести 0 к dispatch_block_flags_t:

dispatch_block_t testBlock = dispatch_block_create(static_cast<dispatch_block_flags_t>(0), ^{ ... });
...