我正在编写一个从服务器获取数据的iOS应用程序。我有几个ViewControllers
。我曾经在viewDidLoad
方法
-(void)ViewDidload
{
[self loadData];
}
-(void)loadData
{
//calling to webservice caller class
}
但这会降低应用的性能。在viewcontroller中加载数据的最佳方法是什么?对于webservice调用,我有一个单独的类。在我的loadData
方法中,我在webservice调用类中调用了该特定方法。
这将阻止我的用户界面。
答案 0 :(得分:2)
“这会降低应用效果”是什么意思?当您拨打网络服务时,您的应用程序是否滞后?这不是因为你在viewDidLoad
中调用它,这是因为你在主线程中这样做。
要拨打您的网络服务,您可以使用:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// Call here your web service
dispatch_sync(dispatch_get_main_queue(), ^{
// push here the results to your ViewController
});
});
使用这个简单的解决方案,您可以在单独的线程中从Web服务下载数据。并使用mainThread将数据推送到ViewController
。此代码不会冻结您的应用。但是你会有一刻没有任何反应。这是使用UIActivityIndicatorVew
的好时机。
答案 1 :(得分:0)
我猜你的界面是滞后的。 试试这个:
-(void)ViewDidload
{
[NSThread detachNewThreadSelector:@selector(loadData) toTarget:self withObject:nil];
}