Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS/Objective-C:调用完成区的语法_Objective C_Completionhandler - Fatal编程技术网

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

IOS/Objective-C:调用完成区的语法,objective-c,completionhandler,Objective C,Completionhandler,由于某种原因,我似乎无法正确地接到以下电话 方法签名为: -(void)getMyBlock: (void (^)(NSString *))completed; // It returns a string. 以下尝试(以及我尝试过的大约十次其他尝试)称之为无效: [self getMyBlock: (void (^)(NSString*)completed]; 您需要为completed参数提供一个块: [self getMyBlock:^(NSString *result) {

由于某种原因,我似乎无法正确地接到以下电话

方法签名为:

-(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);
}];
此链接将帮助您解决以下问题:

我当然希望
getMyBlock
的实现能做得更多,否则就不需要完成块了。它做得更多——有好几层方法和服务器调用,但完成的(结果)语法是最后让我困惑的问题。