IOS/Objective-C:调用完成组的语法



由于某种原因,我似乎无法正确接听以下调用。

方法签名为:

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

以下尝试(以及我尝试过的大约十次其他尝试(调用它不起作用:

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

这就是你的块方法应该的样子:

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

这就是你所说的:

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

此链接将帮助您: http://goshdarnblocksyntax.com/

您需要为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);
}
}