加快从 ALAssetsLibrary 读取和填充 UITableView 的可能方法

Posted

技术标签:

【中文标题】加快从 ALAssetsLibrary 读取和填充 UITableView 的可能方法【英文标题】:Possible ways to speed up reading from ALAssetsLibrary and populating a UITableView 【发布时间】:2012-04-20 01:55:52 【问题描述】:

现在,我正在使用 ALAssetsLibrary 从 ALAssetsGroupSavedPhotos 和 ALAssetsGroupLibrary 收集照片。将所有资产读入数组后,我会填充我的 UITableView ([myTable reloadData]) 以显示照片。

我发现如果用户有很多照片,延迟会增加。有什么办法可以加快速度吗?尽管相机胶卷或照片库中的照片数量很多,但默认的 UIIMagePicker 似乎根本没有延迟。有没有办法达到同样的速度?

谢谢!

【问题讨论】:

ALAsset 将在单独的线程中工作,因为它是一个 BLOCK。所以你必须在主线程中做用户界面的东西。请在此处查看我的答案以获取更多详细信息..您可以在此处查看我的答案***.com/questions/13508535/… 【参考方案1】:

使用资产组的enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock 枚举您当前需要显示的资产,而不是使用- (void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock

您可以(我想您想填充表格视图)例如,只需在您的 tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中枚举索引 indexPath.row 处的资产。

【讨论】:

以上是关于加快从 ALAssetsLibrary 读取和填充 UITableView 的可能方法的主要内容,如果未能解决你的问题,请参考以下文章

iOS系统相册的有关操作

多个线程从同一个文件中读取

从 ALAssetsLibrary 获取所有照片

MonoTouch:从 ALAssetsLibrary.AssetForUrl 中获取图像

如何释放从 ALAssetsLibrary 获取的 UIimage

如何使用 fsspec+adlfs 加快从 adl:// 读取 CSV/Parquet 文件的速度?