IOS / Objective-C: синтаксис для вызова блока завершения - PullRequest
0 голосов
/ 24 сентября 2018

По какой-то причине я не могу правильно ответить на следующий вызов.

Подпись метода:

-(void)getMyBlock: (void (^)(NSString *))completed; // It returns a string.

Следующая попытка (и еще около десяти других попыток) выполнитьпозвонить не работает:

[self getMyBlock: (void (^)(NSString*)completed];

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вот как должен выглядеть метод вашего блока:

-(void)getMyBlock: (void (^)(NSString * yourString))completed {
    completed(@"HELLO");
}

И вот как вы его называете:

[self getMyBlock:^(NSString *yourString) {
    NSLog(@"%@", yourString);
}];

Эта ссылка поможет вам: http://goshdarnblocksyntax.com/

0 голосов
/ 24 сентября 2018

Вам необходимо предоставить блок для параметра completed:

[self getMyBlock:^(NSString *result) {
    // this code is called when the asynchronous code inside getMyBlock is done
}];

Где-то в реализации метода getMyBlock есть код, подобный следующему:

- (void)getMyBlock: (void (^)(NSString *))completed {
    // do some asynchronous stuff
    NSString *result = // some result string
    if (completed) {
        completed(result);
    }
}
...