我正在尝试在我的表格视图中加入盛大的中央调度。我有一个财产:NSArray *topPlaces
topPlaces
is 是来自 Flickr 查询的字典数组。这需要一些时间来执行,所以我想把它放在一个单独的线程上。此表用于topPlaces
填写表的每一行(注意:此表是应用程序加载时出现的第一个视图)。因为有几个方法调用了 getTopPlaces,所以如果 topPlaces 没有初始化,我会在 getTopPlaces 中进行延迟实例化。我的代码目前:
- (NSArray *)getTopPlaces
{
if (!_topPlaces)
{
dispatch_queue_t downloadrQueue = dispatch_queue_create("lister downloader", NULL);
dispatch_async(downloadrQueue, ^{
_topPlaces = [FlickrFetcher topPlaces];
dispatch_async(dispatch_get_main_queue(), ^{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"_content" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *flickrTopPlacesAlphabetic = [_topPlaces sortedArrayUsingDescriptors:sortDescriptors];
_topPlaces = flickrTopPlacesAlphabetic;
});
});
dispatch_release(downloadrQueue);
}
return _topPlaces;
}
The main problem I'm trying to solve is that when a row is selected, it segues to a new table view. 但是当我选择一行时,它会冻结几秒钟,直到新表加载。我希望用户即使在选择行并准备继续时也能够滚动。任何帮助将不胜感激。