NSOperationQueue setSuspended: NO falla al iniciar las operaciones de copy de security

Estoy teniendo un problema en el que estoy probando mi aplicación activando y desactivando el modo avión para manejar conexiones intermitentes o escamosas.

Básicamente necesito poner en queue las requestes de envíos del usuario y hacer esto sincrónicamente, si la request falla, sácala de la queue, dile al usuario que falló y haz la siguiente. La adición de operaciones puede ser muchas a la vez o 1 a la vez, independientemente de que necesiten poner en queue y ejecutar una a la vez.

Está funcionando bien hasta aproximadamente la tercera o cuarta vez que corté la connection, una vez que hago eso, el NSOperationQueue de AFHTTPRequestOperations no continúa ejecutándose, aunque confirmo que están sentados en el NSOperationQueue . Tengo una class de tarea personalizada que tiene una AFHTTPRequestOperation como una propiedad y en su inicializador perezoso AFHTTPRequestOperation la request.

Esto es lo que básicamente estoy haciendo en el código:

Mi class personalizada que contiene una tarea y un administrador (por lo que la request puede crearse en un iniciador perezoso).

 @interface MyTask : NSObject @property (nonatomic, strong) AFHTTPRequestOperation *request; @property (nonatomic, strong) AFHTTPRequestOperationManager *manager; @property (nonatomic, strong) NSString *name; @end 

El código dentro de una class personalizada de gestor de operaciones que agrega las tareas enviadas desde los viewcontrollers:

 - (void)addNewRequest:(MyTask *)task { [self.operationQueue addOperation:task.request]; } 

A continuación, explico cómo manejo la pausa en línea y la reanudación de la queue:

 __block NSOperationQueue *operationQueue = self.operationQueue; __weak typeof(self) weakSelf = self; [self.operationRequestManager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { __strong typeof(weakSelf) strongSelf = weakSelf; switch (status) { case AFNetworkReachabilityStatusNotReachable: [strongSelf.networkHelper setNetworkActivityIndicatorVisible:NO]; [operationQueue setSuspended:YES]; break; case AFNetworkReachabilityStatusReachableViaWWAN: [strongSelf.networkHelper setNetworkActivityIndicatorVisible:YES]; [operationQueue setSuspended:NO]; break; case AFNetworkReachabilityStatusReachableViaWiFi: [strongSelf.networkHelper setNetworkActivityIndicatorVisible:YES]; [operationQueue setSuspended:NO]; break; default: [strongSelf.networkHelper setNetworkActivityIndicatorVisible:NO]; [operationQueue setSuspended:YES]; break; } }]; [self.operationRequestManager.reachabilityManager startMonitoring]; 

He confirmado que entra en los casos de reanudación y que hay operaciones en el operationQueue enviando el método operationCount. Pero por la razón que sea, el process se detiene después de algunas veces de estar encendido y fuera de línea.

También estoy estableciendo maxConcurrency en 1 en opQueue para forzar el comportamiento síncrono.

 - (NSOperationQueue *)operationQueue { if (_operationQueue == Nil) { _operationQueue = [[NSOperationQueue alloc] init]; [_operationQueue setMaxConcurrentOperationCount:1]; } return _operationQueue; } 

ETA: intenté establecer el operationQueue en atómico para ver si era un problema de subprocess y que no lo resolvió.