2012-05-15 5 views
0

UIDocument's saveToURL:forSaveOperation:completionHandler: Предполагается быть асинхронным (в документации говорится, что он выполняет это действие в фоновом режиме), но при вызове этого кода у моего кода есть 7-10 секундный лаг.UIDocument saveToURL: вызывает серьезное отставание

Вот код:

NSLog(@"saving image..."); 
[picDoc saveToURL:[picDoc fileURL] 
forSaveOperation:UIDocumentSaveForCreating 
completionHandler:^(BOOL success) { 


    dispatch_async(dispatch_get_main_queue(), ^{ 
     if (success) { 
      NSLog(@"image save successful!"); 
      UIImage *thumbnail = [image imageByScalingAndCroppingForSize:CGSizeMake(146, 110)]; 
      Picture *picture = [[Picture alloc] initWithThumbnail:thumbnail filename:fileName]; 
      [[set pictures] addObject:picture]; 




      [self setupPictures]; 

      [scrollView scrollRectToVisible:((UIView *)[[scrollView subviews] lastObject]).frame animated:YES]; 
      currentIndex = [[set pictures] count] - 1; 
      [self showPicture]; 

     } else { 
      NSLog(@"failed saving image"); 
     } 
     [SVProgressHUD dismiss]; 
    }); 

    [picDoc closeWithCompletionHandler:nil]; 
}]; 
NSLog(@"exit"); 

И консоль:

2012-05-15 07:07:27.417 Picventory[5939:707] saving image... 
2012-05-15 07:07:34.120 Picventory[5939:707] exit 
2012-05-15 07:07:34.740 Picventory[5939:707] image save successful! 

Почему существует такая огромная задержка, когда вызов является асинхронным? Thanks

+0

У вас есть выход: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDocument_Class/UIDocument/UIDocument.html – CarlJ

ответ

1

Запись файла на диск асинхронна, но с моментальным снимком данных документа нет. Вы должны использовать Time Profiler в инструментах, чтобы узнать, что на самом деле занимает так много времени. Я бы предположил, что вам может понадобиться оптимизировать ваш contentsForType:error: (или эквивалентный) метод, но сначала измерьте!

+1

Вы правы. Просто осознал это. Я преобразовывал в NSData, используя UIImagePNGRepresentation(), но это было слишком медленно. Теперь использование JPG и намного быстрее. Благодаря! – 0xSina

Смежные вопросы