简而言之,类似于:
// Schedule a timer repeating every 2 seconds
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self.tableView
selector:@selector(reloadData)
userInfo:nil
repeats:YES];
更长的版本:
您需要从计时器调用 -doParse、获取数据、进行解析并重新加载数据。
为了不阻塞主线程,你不能[[NSXMLParser alloc] initWithContentsOfURL:theURL]
从主线程调用。
反而:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:theURL];
...
// finish parsing
dispatch_async(dispatch_get_main_queue(), ^{
[tableView reloadData];
});
});
并-doParse
使用来自 -viewDidLoad 的 NSTimer 调用:
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(doParse)
userInfo:nil
repeats:YES];
进一步阅读:WWDC 2012 Session 211 - 在 iOS 上构建并发用户界面。