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/
出于某种原因,我似乎无法正确调用以下内容。
方法签名是:
-(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/