从一个屏幕上单击一个按钮,我正在另一个屏幕上导航,我正在正确导航,但屏幕一直挂起,直到我正在导航到的屏幕获得 Web 服务响应(在 viewDidLoad 中我正在调用 Web 服务)如何解决这个问题谢谢
问问题
1269 次
2 回答
1
将 web 服务调用移动到viewWillAppear
or viewDidAppear
,因此在控制器视图出现在屏幕上后调用将启动。
理想情况下,您应该在后台执行 Web 服务调用,即不在主线程上。使用NSOperation
和NSOperationQueue
或AFNetworking
或Grand Central Dispatch。然后,您可以viewDidLoad
自己发起呼叫。
以下是一些可以帮助您入门的链接。
希望有帮助!
于 2013-09-12T07:01:41.880 回答
0
发生这种情况是因为 web 服务包含大量数据,因此您需要尝试此操作。
使用 [NSURLConnection sendAsynchronousRequest:queue:completionHandler: 加载图像,然后使用 NSCache 防止一次又一次地下载相同的图像。
正如许多开发人员建议的那样,使用 SDWebimage 并且它确实包含上述下载图像文件的策略。您可以加载任意数量的图像,并且根据代码作者,不会多次下载相同的 URL
示例
[NSURLConnection sendAsynchronousRequest:queue:completionHandler:
NSURL *url = [NSURL URLWithString:@"your_URL"];
NSURLRequest *myUrlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest: myUrlRequest queue: queue completionHandler: ^ (NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil)
//doSomething With The data
else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
//time out error
else if (error != nil)
//download error
}];
然后使用 NSCache...
于 2013-09-12T07:01:19.613 回答