UIDocument的saveToURL:forSaveOperation:completionHandler:应该是异步的(在文档中,它说它在后台队列上执行此操作),但我的代码在调用它时有7-10秒的延迟。
代码如下:
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!当调用是异步的时,为什么会有如此巨大的延迟?谢谢
发布于 2012-05-15 19:16:37
将文件写入磁盘是异步的,但获取文档数据的快照则不是。您应该使用Instruments中的Time Profiler来找出实际花费这么长时间的原因。我猜您可能需要优化您的contentsForType:error: (或等效的)方法,但首先要测量!
https://stackoverflow.com/questions/10599476
复制相似问题