由于某种原因,我似乎无法正确接听以下调用。
方法签名为:
-(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);
}
}