No se puede actualizar UIView desde el código de bloque en el objective C

Estoy intentando actualizar una label para mostrar el progreso del file que se downloadá utilizando AFNetworking Framework. El problema es que cuando establezco el porcentaje en la label en setProgressiveDownloadProgressBlock, la label se actualiza solo cuando se inicia la descarga y cuando se completa la descarga.

__weak MTCViewController *weakSelf= self; [_operation setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) { float percent = (float)(totalBytesRead / totalBytesExpectedToReadForFile)*100;; // [weakSelf updateProgress:percent]; [weakSelf updateText:[NSString stringWithFormat:@"Progress = %f",percent]]; }]; [_operation start]; 

Además, cuando elimino el código de actualización de la label, el bloque parece estar actualizando correctamente

Debe llamar a todos los cambios de UI en el hilo principal. Por lo tanto, calcule el porcentaje y luego envíe el código que actualiza la interfaz de usuario del hilo principal:

 __weak MTCViewController *weakSelf= self; [_operation setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) { float percent = ((float)totalBytesRead / (float)totalBytesExpectedToReadForFile)*100; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf updateText:[NSString stringWithFormat:@"Progress = %f", round(percent)]]; }); }]; [_operation start];