NSURLConnection no llama completa en múltiples vistas

Hoy temprano hice la siguiente pregunta:Bloqueo de iOS se detiene cuando se empuja la vista

La operación que mencioné (OP1) es en realidad un "http get" para mi servidor, utilizando NSURLConnection.
Después de más investigación descubrí que el bloque en realidad no "muere". Lo que realmente sucede es que la solicitud se ENVIÓ realmente (el servidor la registra), incluso después de que la vista se haya enviado (verificada mediante [NSThread sleep: 10]). ¡El servidor responde pero luego NADA sucede en el lado de la aplicación si se ha empujado view2! ¡Casi como si la conexión hubiera perdido su delegado! Otra posibilidad que estoy observando es "el hecho de que NSURLConnection está en elrsMainLoop ¿relacionado?"

¿Alguien puede ayudar?

Por favor no olvides que:
0. Todo funciona bien siempre que la vista2 no se presione hasta que se complete la operación.
1. La solicitud se envía asíncrona.
2. Configuré el delegado y funciona siempre que la vista no cambie.
3. ver1 inicia la operación utilizando la propiedad "referencia de objeto singleton" "OP1Completed"
4. ver2 comprueba la finalización de OP1 a través de la propiedad en la "referencia de objeto singleton"
5. ver2 obtiene el "resultado" yendo a la propiedad "singleton.OP1Result"

Edición 1:
Ok vamos a tener algo de código. Primero, aquí está el código relevante de mi singleton (llamado "Interacción"):

-(void)loadAllContextsForUser:(NSString *)username{
userNameAux = username;
_loadingContextsCompleted = NO;
if (contextsLoaderQueue == NULL) {
    contextsLoaderQueue = dispatch_queue_create("contextsLoaderQueue", NULL);
}

dispatch_async(contextsLoaderQueue, ^{
    NSLog(@"Loading all contexts block started");
    [self requestConnectivity];

    dispatch_async(dispatch_get_main_queue(), ^{
        [Util Get:[NSString stringWithFormat:@"%@/userContext?username=%@", Util.azureBaseUrl, [username stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]
     successBlock:^(NSData *data, id jsonData){
         NSLog(@"Loading all contexts block succeeded");
         if([userNameAux isEqualToString:username]){
             _allContextsForCurrentUser = [[NSSet alloc]initWithArray: jsonData];
         }
     } errorBlock:^(NSError *error){
         NSLog(@"%@",error);
     } completeBlock:^{
         NSLog(@"load all contexts for user async block completed.");
         _loadingContextsCompleted = YES;
         [self releaseConnectivity];
     }];
    });

    while (!_loadingContextsCompleted) {
        NSLog(@"loading all contexts block waiting.");
        [NSThread sleepForTimeInterval:.5];
    }
});
NSLog(@"Load All Contexts Dispatched. It should start at any moment if it not already.");
}

Y aquí está la clase Util, que en realidad maneja la solicitud / respuesta

-(id)initGet:(NSString *)resourceURL successBlock:(successBlock_t)successBlock errorBlock:(errorBlock_t)errorBlock completeBlock:(completeBlock_t)completeBlock;{
if(self=[super init]){
    _data=[[NSMutableData alloc]init];
}

_successBlock = [successBlock copy];
_completeBlock = [completeBlock copy];
_errorBlock = [errorBlock copy];

NSURL *url = [NSURL URLWithString:resourceURL];
NSMutableURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
//[_conn scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
//[_conn start];
NSLog(@"Request Started.");

return self;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [_data setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [_data appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
id jsonObjects = [NSJSONSerialization JSONObjectWithData:_data options:NSJSONReadingMutableContainers error:nil];

id key = [[jsonObjects allKeys] objectAtIndex:0];
id jsonResult = [jsonObjects objectForKey:key];

_successBlock(_data, jsonResult);
_completeBlock();
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
_errorBlock(error);
_completeBlock();
}

Y finalmente aquí está la parte relevante VC1 (empujando en VC2)

- (IBAction)loginClicked {
NSLog(@"login clicked. Preparing to exibit next view");

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
AuthenticationViewController *viewController = (AuthenticationViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ContextSelectionView"];

NSLog(@"Preparation completed. pushing view now");

[self presentViewController:viewController animated:YES completion:nil];
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta