我有以下功能传递到座功能
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
我该如何称呼呢?如何将BOOL作为块传递?我已经尝试了几种方法,而且我似乎无法理解这是如何工作的。
我有以下功能传递到座功能
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
我该如何称呼呢?如何将BOOL作为块传递?我已经尝试了几种方法,而且我似乎无法理解这是如何工作的。
您没有将“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:
据推测将要熄灭并尝试登录到一些服务。当尝试已经结束,无论是成功或失败,你的块,这是一段可执行代码,将运行,并将于loginWithCompletionBlock:
顺便传递一个BOOL
值时,BOOL
的名称可以是任何你喜欢,虽然通常你使用的API会给它一个名字(例如success
)来表示它的含义。
它的实现为:
- (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!!
}
}];
希望这有助于。