iOS:AFNetworking中意外的重复请求

时间:2013-09-30 20:44:27

标签: ios afnetworking nsoperation nsoperationqueue

我一直在使用AFNetworking获取同步信息,并发现当我应用multithreading时它会向服务器发送多个请求,但我只执行一个请求语句。

可以使用嗅探器应用程序跟踪此问题,因为Xcode debugger无法跟踪请求。

此外,我注意到当互联网连接速度变慢时会发生这种情况。

以下是我执行的一些代码

开始同步

- (void)SyncFull
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(FinishSyncFull:)
                                                 name:@"FinishSyncFull" object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(RemoveNotificacions:) name:@"RemoveNotificacions" object:nil];

    [[PivotService getInstance] sync];


}

继续同步的通知

-(void)FinishSyncFull:(NSNotification*) Notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"FinishSyncFull" object:nil];

    if ([SyncManager getInstance] mustSync])
    {

        [[FMDBHelper getInstance] RemoveDataFromTable:@"SyncInfo"];
        [[FMDBHelper getInstance] RemoveDataFromTable:@"SyncDetails"];


        [self startSyncFull];
     }
}

startSyncFull功能说明:

- (void)startSyncFull
{

    [[ServiceEntity1 getInstance] sync];

    [[ServiceEntity2 getInstance] sync];

    [[ServiceEntity3 getInstance] sync];

(...)
    }

1 个答案:

答案 0 :(得分:-2)

您只能在主线程中发出http请求,因此您必须使用以下命令执行该威胁中的每个请求:

dispatch_sync(dispatch_get_main_queue(), ^{
  //Your request      
});
祝你好运!