サーバーからJSON形式でデータを取得しています。それは約 150 レコードであり、最初は GCD を使用していませんでしたが、アプリのボタンを押してデータを含むテーブルを表示すると、テーブル ビューに切り替えてデータを表示する前に約数秒間遅延しました。 . だから私はGCDを実装し、ボタンを押すとすぐにテーブルビューに切り替わりますが、データのロードに数秒の遅延があり、GCD実装前よりも長いようです. したがって、GCDを正しく使用しているかどうか、またはサーバーが遅延を引き起こしているかどうかはわかりません(これが原因だと思います)。以下は、viewDidLoad で [self retrieveData] として呼び出す retrieveData というメソッドでの GCD の実装です。
- (void)retrieveData
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
NSURL *url = [NSURL URLWithString:@"http://MY_URL/JSON/document.json"];
NSData * data = [NSData dataWithContentsOfURL:url];
dispatch_async(dispatch_get_main_queue(), ^{
json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//Set up our exhibitors array
exhibitorsArray = [[NSMutableArray alloc] init];
for (int i = 0; i < json.count; i++) {
//create exhibitors object
NSString * blabel = [[json objectAtIndex:i] objectForKey:@"BoothLabel"];
NSString * bName = [[json objectAtIndex:i] objectForKey:@"Name"];
NSString * bURL = [[json objectAtIndex:i] objectForKey:@"HyperLnkFldVal"];
exhibitors * myExhibitors = [[exhibitors alloc] initWithBoothName: bName andboothLabel: blabel andBoothURL: bURL];
//Add our exhibitors object to our exhibitorsArray
[exhibitorsArray addObject:myExhibitors];
//Sort by name
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
[exhibitorsArray sortUsingDescriptors:[NSMutableArray arrayWithObject:sort]];
}
[self.myTableView reloadData];
});
});
}