我正在使用
[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];
枚举相册。
枚举器以“异步”方式运行,换句话说,方法在枚举所有项之前返回。
如何知道枚举何时结束?
我正在使用组填充NSMutableArray,并在枚举完成后调用[myTableView reloadData]
。
答案 0 :(得分:10)
您的枚举将为您的块提供一个nil-pointer组,并在它通过最后一次传递时将stop设置为true。您可以使用它来设置标志或使用performSelectorOnMainThread:在下一次通过RunLoop时调用一些完成代码。
答案 1 :(得分:0)
我为此查看了API,因为我一开始认为答案是使用一些同步方法来做同样的事情。由于没有这样的方法,我怀疑由于一些实现细节,枚举器不提前知道它有多少项。另外,它可能很慢。
在这种情况下,我会在枚举运行时重新加载表,小心不要阻塞主线程或枚举线程。这是我会尝试的:
执行枚举,将新项目存储在数组中以便在表格中显示。每隔X秒(0.1可能?),将新项添加到用作表的数据源的数组中,然后重新加载它。一定要使用performSelectorOnMainThread:添加到表的数组或重新加载其数据。将这些项添加到表的数组后,将添加到表数组中的新数组项。
这种方法将为用户带来好处,即表格将立即开始加载,即使实际需要一段时间来加载所有内容。