0

同期情報に使用AFNetworkingしていて、申請時にサーバーに複数のリクエストが送信されることがわかりましたが、multithreadingリクエストステートメントは 1 つしか実行しません。

Xcode debuggerこの問題は、要求を追跡できないため、スニファ アプリケーションを使用して追跡できます。

また、インターネット接続が遅くなると、これが発生することに気付きました。

ここに私が実行するいくつかのコードがあります

同期を開始

- (void)SyncFull
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(FinishSyncFull:)
                                                 名前:@"FinishSyncFull" オブジェクト:nil];

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

    [[PivotService getInstance] 同期];


}

同期を続行するための通知

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

    if ([SyncManager getInstance] mustSync])
    {

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


        [自己 startSyncFull];
     }
}

機能の説明startSyncFull:

- (void)startSyncFull
{

    [[ServiceEntity1 getInstance] sync];

    [[ServiceEntity2 getInstance] sync];

    [[ServiceEntity3 getInstance] sync];

(...)
    }
4

1 に答える 1

-2

メインスレッドでのみ http リクエストを作成できるため、次を使用してその脅威ですべてのリクエストを実行する必要があります。

dispatch_sync(dispatch_get_main_queue(), ^{
  //Your request      
});

幸運を!

于 2013-09-30T21:15:08.680 に答える