我很困惑没有人能回答这个问题...
所以,我最终弄清楚如何实现exact关于如何下载/显示图标,与实际应用程序商店中使用的效果相同。
采用 LazyTableImages 示例项目并进行一些简单的修改。
进入根视图控制器并删除有关 cellForRowAtIndexPath 中表格滚动和/或减速的所有检查
删除对 loadImagesForOnScreenRows 的所有调用,从而也删除该方法。
进入 IconDownload.m 并将 startDownload 方法更改为not执行异步图像下载,而是在后台线程上执行同步下载。删除star Download中的所有代码,并添加以下内容,所以它看起来像这样:
- (void)startDownload
{
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImage) object:nil];
[queue addOperation:operation];
[operation release];
[queue release];
}
然后,添加一个loadImage,如下所示:
- (void)loadImage
{
NSData *imageData = [[NSData alloc] initWithContents OfURL:[NSURL URLWithString:appRecord.imageURLString]];
self.apprecord.appIcon = [UIImage imageWithData:imageData];
[imageData release];
[self performSelectorOnMainThread:@selector(notifyMainThread) withObject:nil waitUntilDone:NO];
}
然后,像这样添加notifyMainThread:
- (void)notifyMainThread
{
[delegate appImageDidLoad:self.indexPathInTableView];
}
完毕!运行它,您将看到确切的应用程序商店行为,不再等待请求图像下载直到滚动停止,也不再等待图像显示直到滚动停止或直到用户将手指从屏幕上移开。
一旦单元格准备好显示,图像就会被下载,并且图像一旦被下载就会被显示,就这样。
抱歉,有任何拼写错误,我没有从我的应用程序粘贴此内容,而是输入它,因为我现在不在我的 Mac 上......
无论如何,我希望这对大家有所帮助......