我有一個問題,幾天來一直困擾着我。NSScanner - SLOW性能 - (UITableView,NSXMLParser)
我使用NSXMLParser解析RSS提要並將結果提供給UITableView。不幸的是,飼料返回一些HTML,我分析出以下方法:
- (NSString *)flattenHTML:(NSString *)html {
NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString:html];
while ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString:@"<" intoString:NULL] ;
[theScanner scanUpToString:@">" intoString:&text] ;
html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text] withString:@""];
}
html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return html;
}
我目前的NSXMLParser委託方法中調用此方法:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
這精美的作品無論其將HTML解析並壓縮爲文本並填充單元格需要幾分鐘或更長時間。在那無窮無盡的一刻,我的UITableView完全是空的,只有一個單獨的旋轉器旋轉。這不好。這是最後的「bug」,在我發佈這款非常出色的工作應用程序之前進行壓縮。
它在iOS模擬器上運行得很快,這並不奇怪。
在此先感謝您的任何建議。
您是否確定掃描儀是瓶頸?你測量過(使用儀器)嗎?聽起來好像實際的數據傳輸可能也是一個問題。 – Till 2012-08-05 01:12:18
你正在處理的數據有多大?任何低於兆字節的內容都應該快速移動。比這更大,你會看到'NSXMLParser'開始掙扎。 – 2012-08-05 01:14:32
對於完全留在記憶中的東西來說,一分鐘是難以置信的緩慢。添加'NSLog'來確定那分鐘有多少時間通過網絡接收數據,或者你做了多次重複的事情。 – dasblinkenlight 2012-08-05 01:43:51