iPhone:云数据同步加载屏幕无法正常工作

时间:2010-09-14 18:27:52

标签: iphone

在我的应用程序视图中,我有一个子视图显示“正在加载”,并在同步云数据时显示。

在viewdidload中,我有

// Reachability test.
BOOL isConnected = [self checkInternet];

// If we have connectivity, then sync data with cloud.
if(isConnected){
    [self beginDataSync]; 
}else{ 
    [self hideLoadingView];
}

以下我有这个功能。

- (void)beginDataSync{
    SyncData *syncData = [[SyncData alloc] init];
    [syncData syncDataStart];

    [self startAnimatingIndicator];

    do {
        [syncData dropHoodsData];
        //  [syncData dropBarsData];
        [syncData nameDataComparison];
        [syncData locDataComparison];
        [syncData setLocalNamess];
        [syncData setLocNamePairs];
        [syncData syncDataFinish];
    } while ([syncData isSyncing]);

    BOOL finishedSyncing = [syncData syncDataFinish];
    if (finishedSyncing) {
        [self performSelector:@selector(stopAnimatingIndicator) withObject:nil afterDelay:1.0];
    }


        [syncData release];
}

同步正常,所有内容都正确注销,数据正确无误。有问题的行为是视图在同步时不加载“同步”(应用程序只显示启动直到数据完成同步)。这使得应用程序看起来像是“悬挂”。我希望它加载视图,显示加载子视图和数据同步,然后当同步完成时,它隐藏子视图。我有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用线程。由于您正在主线程中执行所有同步操作,因此程序循环无法执行重绘屏幕。

一种解决方案是在加载View Controller上发生viewDiDAppear方法后开始同步。否则我会调查NSThread。