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
的实现能做得更多,否则就不需要完成块了。它做得更多——有好几层方法和服务器调用,但完成的(结果)语法是最后让我困惑的问题。