RaptureXML有点慢

时间:2012-04-29 06:15:57

标签: iphone ios xml

我最近从TBXML切换到RaptureXML,尽管提取信息要容易得多,但当我点击包含我的xml表视图的标签栏按钮时会有明显的延迟。

在我的viewDidLoad方法中,我有以下“

events = [[NSMutableArray alloc] init];

[self loadURL];

我的loadURL方法如下:

- (void)loadURL {

RXMLElement *rootXML = [RXMLElement elementFromURL:[NSURL URLWithString:@"http://api.somexml.com/xml"]];

[rootXML iterateWithRootXPath:@"//event" usingBlock:^(RXMLElement *event) {
    [events addObject:[NSArray arrayWithObjects:
                       [event attribute:@"uri"],
                       [event attribute:@"displayName"],
                       [event attribute:@"type"],
                       nil]];  
}];

[rootXML iterateWithRootXPath:@"//location" usingBlock: ^(RXMLElement *location) {
    [events addObject:[NSArray arrayWithObjects:
                       [location attribute:@"city"],
                       [location attribute:@"lat"],
                       [location attribute:@"lng"],
                       nil]]; 
}];

[rootXML iterateWithRootXPath:@"//start" usingBlock:^(RXMLElement *start) {
    [events addObject:[NSArray arrayWithObjects:
                       [start attribute:@"time"],
                       [start attribute:@"date"],
                       nil]]; 
}];



}

我能做些什么来加快速度吗?此外,当我将行数指定为[事件计数]时,我只有6行才能得到6.请帮助。

1 个答案:

答案 0 :(得分:2)

直到正确的轨道。您需要解析后台线程。做类似以下的事情:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self loadURL];

    dispatch_async(dispatch_get_main_queue(), ^{
        [tableView reloadData];
    });
});

你会注意到我正在主线程上重新加载tableview。在后台线程上更新接口元素有点禁止。