如何在同一个方法中的语句之前异步执行块?以相同方法在语句之前异步执行块
返回总是块之前执行,但如果提交恒等于
号我想座返回之前执行。 我该怎么办? 我尝试dispatch_semaphore_t
,但checkVerifyCode
在主线程中。 我无法阻止主线程。
-(BOOL)checkVerifyCode
{
__block BOOL commit = NO;
[SMSSDK commitVerificationCode:self.verificationNum.text phoneNumber:self.phoneNumber.text zone:@"86" result:^(NSError *error) {
if (error) {
NSString *errInfo = [error.userInfo objectForKey:@"commitVerificationCode"];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
[hud setMode:MBProgressHUDModeText];
[hud setLabelText:@"验证码输入错误"];
[hud setLabelText:errInfo];
hud.color = [UIColor clearColor];
hud.labelColor = [UIColor colorWithRed:118/255.f green:214/255.f blue:255/255.f alpha:0.8f];
hud.detailsLabelColor = [UIColor colorWithRed:118/255.f green:214/255.f blue:255/255.f alpha:0.8f];
hud.margin = 10.f;
hud.yOffset = -100.f;
hud.removeFromSuperViewOnHide = YES;
[hud hide:YES afterDelay:3];
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:commit] forKey:@"bool"];
[self performSelectorOnMainThread:@selector(setCommit:) withObject:dict waitUntilDone:NO];
}else
{
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:commit] forKey:@"bool"];
[self performSelectorOnMainThread:@selector(setCommit:) withObject:dict waitUntilDone:NO];
commit = YES;
}
}];
return commit;
}
为了让你的问题得到正确的答案,请你澄清一下,如果方法checkVerifyCode的调用者线程与线程结果相同:^(){...}块被调用,或者这些线程是不同的。 – DisableR