Привет всем, я использую rss reader, предоставленный Ray , и это здорово.Приложению необходимо проанализировать довольно большой XML-файл размером около 7 МБ.Процесс работает нормально, и я могу скачать и проанализировать контент и сохранить его в базе данных.Тем не менее, у меня есть большая проблема с памятью.При запуске в Instruments он поднимается примерно до 30 Мб, и хотя он работает всего 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];
}