我正在尝试提高我的应用程序的响应能力,在查看调试器控制台时,我注意到该应用程序似乎两次检索 XML 数据。. . 也就是说,当页面出现时,我调度一个后台队列去获取一些 xml 数据,解析它,并返回一个对象数组。我使用 nslog 在控制台中输入数据字符串,并且由于某种原因它打印了两次。这是我的相关代码:
在 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];}
});
}
我不确定这是否是一个问题,但我担心我以某种方式运行两次会浪费资源。关于可能发生的事情有什么想法吗?
谢谢!