我写了很多完成块,但不确定为什么会这样。如果我们使用适当的参数调用块,则不应继续控制基于块的函数。但就我而言,它正在这样做。
<style>img{width:40%}</style>
<img src="https://images-na.ssl-images-amazon.com/images/G/01/img15/pet-products/small-tiles/23695_pets_vertical_store_dogs_small_tile_8._CB312176604_.jpg" />
如果没有互联网连接,控件应从第一次完成时返回(NO);.但它转而进行电子邮件长度检查。我在这里做错了吗?
答案 0 :(得分:4)
如果我理解您的问题,则需要添加return
。
if (! [NetworkConstant appIsConnected])
{
[[AppThemeManager sharedInstance] showNoInternetMessage];
completion(NO);
return;
}
如果没有网络连接,return
会阻止执行该方法的其余部分。
似乎没有理由使用完成处理程序。您的方法中没有异步处理。
答案 1 :(得分:0)
很可能在其他时候你调用了完成块,它们被放置在异步任务调用的其他完成块中,而在给定的例子中并非如此。因此,使用完成块对我理解你的例子没有意义。
- (BOOL) validateFormWithCompletion:(void(^)(BOOL valid)) completion
{
if (! [NetworkConstant appIsConnected]) {
[[AppThemeManager sharedInstance] showNoInternetMessage];
return NO;
}
emailIdTF.text = [emailIdTF.text trimWhiteSpaceAndNextLine];
if (emailIdTF.text.length == 0) {
[[AppThemeManager sharedInstance] showNotificationWithTitle:@"Incomplete" subtitle:@"Please fill in a valid email id" duration:durationForTSMessage withTypeOfNotification:notificationWarning];
return NO;
} else {
return YES;
}
}