我想知道在iOS 8/9中NSURLRequest期间更新等待视图和用户界面的最佳模式。
在我的模型中,NSURLRequest在单例中处理,并通过委托与调用者类通信。
Personaly我在主线程中显示了一个Wait View,我在我的单例中调用dataTaskWithRequest:request,最后我在completitionHandler中更新了delegate(一个viewController)。问题是,有些时候Wait View会在几秒钟后显示,而某些客户端(仅限iOS9)报告随机崩溃调用dataTaskWithRequest。
[APP_DELEGATE startWaitWithText:@"Please Wait"];
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithRequest:request
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
dispatch_sync(dispatch_get_main_queue(), ^{
[APP_DELEGATE stopWait];
[delegate updateUI:data,response,error];
});
}] resume];
编辑。我的等待观点
#define TAG_WINDOW_WAIT 10001
- (void) startWaitWithText:(NSString*) text
{
[self stopWaitModal];
dispatch_async(dispatch_get_main_queue(), ^{
backgrView =[[self window] viewWithTag:TAG_WINDOW_WAIT];
if(!backgrView)
{
backgrView= [[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
[[self window] addSubview:backgrView];
}
backgrView.tag = TAG_WINDOW_WAIT;
[backgrView becomeFirstResponder];
[[self window] bringSubviewToFront:backgrView];
});
}