Hoy extensión para iOS 8 problema cuando widgetPerformUpdateWithCompletionHandler incluye cuerpo asíncrono

Estoy trabajando con la nueva extensión de hoy disponible en iOS 8. La debugging parece ser muy difícil en el dispositivo con resultados inconsistentes, así que he estado usando el simulador la mayor parte del time.

La extensión que estoy construyendo es muy simple que simplemente muestra una image diferente a diario, el flujo es realmente bastante simple:

  • Llamadas iOS widgetPerformUpdateWithCompletionHandler
  • Descargo la image de forma asincrónica
  • Si la image se descargó correctamente, puse el tomastream apropiado en el guión gráfico y invoco el bloque de finalización con la constante: NCUpdateResultNewData
  • Si se produjo un error, invoco el bloque de finalización con la constante: NCUpdateResultFailed

De acuerdo con la documentation de reference de Apple cada vez que llamamos al bloque de finalización con la constante NCUpdateResultNewData, la instantánea del widget debe actualizarse a la vista actual, sin embargo, esto no funciona todo el time, a veces iOS parece estar usando una instantánea anterior.

El código es sencillo, aquí está el código widgetPerformUpdateWithCompletionHandler:

-(void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { __weak TodayViewController *weakSelf = self; NSURL *URL = [NSURL URLWithString:@"http://www.muratekim.com/wp-content/uploads/apple-logo-small.png"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; NSURLSession *session = [NSURLSession shanetworkingSession]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { if (!error) { UIImage *image = [UIImage imageWithData:data]; weakSelf.imageView.image = image; weakSelf.img = image; completionHandler(NCUpdateResultNewData); } else { completionHandler(NCUpdateResultFailed); } }]; [task resume]; } 

¡Gracias por adelantado! Ze