答案 0 :(得分:1)
将网络服务电话转移至viewWillAppear
或viewDidAppear
,以便在屏幕上显示控制器视图后启动通话。
理想情况下,您应该在后台执行Web服务调用,即不在主线程上执行。使用NSOperation
和NSOperationQueue
或AFNetworking
或Grand Central Dispatch。然后,您可以在viewDidLoad
本身发起呼叫。
以下是一些可以帮助您入门的链接。
答案 1 :(得分:0)
这是因为webservice包含大量数据,你需要尝试这个。
使用[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 ...