アプリの応答性を向上させようとしていますが、デバッガー コンソールを確認しているときに、アプリが XML データを 2 回取得しているように見えることに気付きました。. . つまり、ページが表示されると、バックグラウンド キューをディスパッチして xml データを取得し、解析して、オブジェクトの配列を返します。nslog を使用してコンソールにデータ文字列を入力すると、何らかの理由で 2 回出力されます。関連するコードは次のとおりです。
VC で:
-(void)startBackgroundQueue{
dispatch_async(backgroundThread, ^(void){
SDJConnection *connection = [[SDJConnection alloc]init];
self.dataArray = [connection getVideoData];
[[NSNotificationCenter defaultCenter]postNotificationName:@"tube_data_loaded" object:nil];
});
}
SDJConnection の getVideoData メソッドは次のようになります。
-(NSMutableArray *)getVideoData {
NSURL *dataURL = [[NSURL alloc]initWithString:@"https://gdata.youtube.com/feeds/api/users/dancingastronaut/uploads?start-index=1&max-results=10"];
NSData *data = [[NSData alloc]initWithContentsOfURL:dataURL];
NSString *dataString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data string: %@",dataString);
YouTubeParser *parser = [[YouTubeParser alloc]initWithData:data];
[parser setDelegate:parser];
[parser parse];
return [parser videosArray];
}
次に、VC は次のコードを実行します。
-(void)backgroundQueueDone{
dispatch_async(dispatch_get_main_queue(),^(void){
[activityIndicator stopAnimating];
if ([_dataArray count] >1) {
self.tableView.separatorColor = [UIColor darkGrayColor];
[self.tableView reloadData];}
});
}
これが問題かどうかはわかりませんが、どういうわけかこれを 2 回実行してリソースを浪費しているのではないかと心配しています。何が起こっているのかについてのアイデアはありますか?
ありがとう!