我有一个简单的 UITableView,其中每个单元格都有用户可能使用其 iOS 设备相机拍摄的缩略图。
如果启用了 iCloud,图像将保存在其中。但是我想知道加载图像时是否会发生某种缓存,因为我注意到第一次加载时速度很慢,即使当单元格显示在屏幕上时再次调用这段代码,图像显示速度也很快。
这是相关的代码片段,我省略了构建单元格的逻辑,我认为它不相关,因为问题是关于其他方面的:
- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// logic for retrieve data and build cell
NSURL *ubiquityUrl = [fm URLForUbiquityContainerIdentifier:nil];
NSURL *docURL = [ubiquityUrl
URLByAppendingPathComponent:[NSString stringWithFormat:@"P_%@_%@.jpg",imgId,@"thumbnail"]
isDirectory:NO];
// this a custom object extending UIDocument
IP2DataDocument *dataDocument = [[IP2DataDocument alloc] initWithFileURL:docURL];
[dataDocument openWithCompletionHandler:^(BOOL success) {
if (success) {
NSLog(@"iCloud document opened");
// logic for filling table cell picture
} else {
NSLog(@"failed opening document from iCloud");
}
}];
// returning cell
}
每次显示单元格时,我都可以在 Xcode 中看到“已打开 iCloud 文档”。如果发生某种缓存,您能指出在哪里以及如何进行吗?