テーブルビューにグランドセントラルディスパッチを組み込んでいます。私はプロパティを持っています: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;
}
私が解決しようとしている主な問題は、行が選択されると、新しいテーブルビューに移動することです。しかし、行を選択すると、新しいテーブルが読み込まれるまで数秒間フリーズします。行が選択されてセグエの準備をしている間でも、ユーザーがスクロールできるようにしたいと思います。どんな助けでも大歓迎です。