簡體   English   中英

AFHTTPSessionManager GET凍結/陷入僵局?

[英]AFHTTPSessionManager GET freezing/getting deadlocked?

最近,我遇到了一個客戶,他們的互聯網連接速度非常慢,並且也使用GroundControl。 每當他們嘗試加載我的應用程序時,它們都會卡在“嘗試連接到服務器”加載屏幕上。 我知道在代碼中必須將其卡在此處(請參見下面的代碼),因為成功或失敗都不會被調用(如果它們是應用程序,至少會提前)。

NSURL *ourTable = [NSURL URLWithString:[[NSString stringWithFormat: @"%@://%@%@/bla/%@/bla/bla/Reachability",
(useSSLB == YES) ? @"https" : @"http", server, port, self.globalSettings.env]  
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer    = [AFJSONResponseSerializer serializer];

[manager GET:ourTable.absoluteString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

    NSLog(@"ONLINE..");
    [self.ourSyncClass functionThatGetsCalledWhenSuccess;

    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(syncOther) userInfo:nil repeats:NO];
    startSync = YES; //Bool value used for other stuffs

    NSLog(@"Syncing Data");
    [manager invalidateSessionCancelingTasks:YES];

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"FAILED TO CONNECT TO SERVER. %@", error);
    self.offline = YES; //bool used for other stuff
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0];
    [self.homeViewControllerInstance.syncView setAlpha:0.0];
    [UIView commitAnimations];

    [self.ourSyncClass createDB];
    [self.ourSyncClass openDB];

    [self startCustomFunction;
    [manager invalidateSessionCancelingTasks:YES];

}];

為什么我們的代碼會卡在(鎖定?)此GET完成塊中? 是由於互聯網連接速度慢嗎? 可能與GroundControl有關嗎? 我該如何處理這種情況?

好吧,我最終找到了問題所在。 事實證明,我們的代碼中存在一個邏輯錯誤,即在每次執行此代碼片段之前,都未初始化ourSyncClass對象。 由於某種原因,這使完成模塊陷入僵局。 因此,我們加入了一個類似if(self.ourSyncClass!= nil){

},現在一切似乎都可以正常工作。 我也將在收到客戶回復后發布更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM