【发布时间】:2012-03-18 22:04:12
【问题描述】:
大家好,我正在使用Ray 提供的 rss 阅读器,这很棒。该应用程序需要解析一个相当大的 xml 文件,大约 7MB。该过程运行良好,我可以下载并解析内容并将其保存到数据库中。但是,我对内存有一个主要问题。在 Instruments 中运行时,它会上升到大约 30mb,虽然它只有 30-40 秒,但它会在我第一次运行时执行下载和解析时使应用程序崩溃。
对此的任何帮助将不胜感激。我认为导致主要问题的代码是:
- (void)requestFinished:(ASIHTTPRequest *)request {
//////// problem code /////////
NSError *error;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[request responseData]
options:0 error:&error];
[_queue addOperationWithBlock:^{
if (doc == nil) {
} else {
entries = [NSMutableArray array];
[self parseFeed:doc.rootElement entries:entries];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
for (RSSEntry *entry in entries) {
int insertIdx = [_allEntries indexForInsertingObject:entry sortedUsingBlock:^(id a, id b) {
RSSEntry *entry1 = (RSSEntry *) a;
RSSEntry *entry2 = (RSSEntry *) b;
return [entry1.articleDate compare:entry2.articleDate];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//... do everything I've done before...
[pool drain];
}];
[_allEntries insertObject:entry atIndex:insertIdx];
entries = 0;
}
}];
}
//[doc release];
//doc = nil;
}];
[doc release];
doc = nil;
[error release];
}
【问题讨论】:
-
可能其他地方有内存泄漏。
标签: iphone ios memory memory-management xml-parsing