在ViewController中加载数据的最佳方法是什么

时间:2014-04-09 07:33:30

标签: ios objective-c web-services ios7 viewcontroller

我正在编写一个从服务器获取数据的iOS应用程序。我有几个ViewControllers。我曾经在viewDidLoad方法

下为该viewcontroller加载数据
-(void)ViewDidload
{
    [self loadData];
}


-(void)loadData
{
    //calling to webservice caller class
}

但这会降低应用的性能。在viewcontroller中加载数据的最佳方法是什么?对于webservice调用,我有一个单独的类。在我的loadData方法中,我在webservice调用类中调用了该特定方法。

这将阻止我的用户界面。

2 个答案:

答案 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];
}