我有以下功能
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
我怎么称呼它?如何将 BOOL 作为块传递?我尝试了几种方法,但我似乎不明白这是如何工作的。
我有以下功能
- (void)loginWithCompletionBlock:(void (^)(BOOL))completion
我怎么称呼它?如何将 BOOL 作为块传递?我尝试了几种方法,但我似乎不明白这是如何工作的。
您不是在传递“aBOOL
作为一个块”,而是在传递一个稍后将传递给 a 的块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
)来表示其含义。
它被实现为:
- (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!!
}
}];
希望这可以帮助。