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

IOS/Objective-C: Syntax for calling completion bloc

出于某种原因,我似乎无法正确调用以下内容。

方法签名是:

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

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

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

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

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

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

你是这样称呼它的:

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

这个 link 可以帮助您: http://goshdarnblocksyntax.com/