我有以下功能
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
我该怎么称呼它?如何将BOOL作为块传递?我已经尝试了几种方法,我似乎不明白它是如何工作的。
答案 0 :(得分:2)
你没有传递“BOOL
作为一个块”,你传递了一个块,稍后会传递BOOL
。
[thingy loginWithCompletionBlock:^(BOOL didSomethingInteresting){
// Your code here, using didSomethingInteresting, such as:
if( didSomethingInteresting ){
// Do something even more interesting
}
else {
// Do something boring
}
}];
loginWithCompletionBlock:
可能会出现并尝试登录某些服务。当尝试结束时,无论是成功还是失败,您的块(一段可执行代码)都将被运行,并且BOOL
loginWithCompletionBlock:
值
顺便提一下,BOOL
的名称可以是您喜欢的名称,但通常您使用的API会为其指定名称(例如success
)以表明其含义。
答案 1 :(得分:1)
它实现为:
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
{
BOOL result = NO;
// Do the login thing.
completion(result);
}
打电话就是这样:
[object loginWithCompletionBlock:^(BOOL success) {
if (success) {
// It worked
} else {
// Oh No!!
}
}];
希望这有帮助。