#iphone #memory-leaks #gdata
#iPhone #утечки памяти #gdata
Вопрос:
У меня есть метод, в котором я извлекаю записи GDataFeedBase и возвращаю их в виде массива другой функции
NSMutableArray *tempFeedArray = [NSMutableArray array];
NSURL *feedURL = [[NSURL alloc] initWithString:escapedUrlString];
NSData *data = [NSData dataWithContentsOfURL:feedURL];
GDataFeedBase *feedBase = [[GDataFeedBase alloc] initWithData:data];
[tempFeedArray addObjectsFromArray:[feedBase entries]];
[feedURL release];
[feedBase release];
return tempFeedArray;
.....
У меня есть другая функция, с помощью которой я извлекаю требуемые значения из объекта tempFeedArray, который является GDataEntryYouTubeVideo
for(int count = 0; count < loopCount; count ){
NSMutableDictionary *feedBaseEntryDict = [[NSMutableDictionary alloc] init];
entry = [tempFeedArray objectAtIndex:count];
youTubeUrl = [[entry alternateLink] href];
if ([entry statistics]!= nil) {
noOfVws= [[[entry statistics] viewCount] intValue];
}
duratn = [[[entry mediaGroup] duration] stringValue];
descr = [[[entry mediaGroup] mediaDescription] stringValue];
authorName = [[[entry authors] objectAtIndex:0] name];
publishedDt = [[entry publishedDate] stringValue];
rating = [[[entry rating] average] stringValue];
imageURL = [[[[entry mediaGroup] mediaThumbnails] objectAtIndex:0] URLString];
videoTitle = [[[entry mediaGroup] mediaTitle] stringValue];
.....
}
......
В первый раз все работает нормально. Но в следующий раз это покажет утечку памяти на
GDataXMLNode stringFromXMLString:
Кто-нибудь еще сталкивался с этой проблемой?
Я обнаружил аналогичную проблему, поднятую на форуме разработчиков gdata: http://groups.google.com/group/gdata-objectivec-client/browse_thread/thread/f88de5a7bb784719/cab328a8725ee6c5
но решение не решает проблему.
Любая помощь очень ценится.
Ответ №1:
Похоже, что это может быть не ваш код, а клиентская библиотека, было несколько других потоков по той же проблеме. У этого есть обходной путь, но я сам его не пробовал.
Другими имеющимися у вас вариантами было бы обновить до последней версии (1.12 была выпущена 11 апреля 2011 года), взглянуть на исходный код и попытаться отследить вашу проблему или отправить сообщение о проблеме (похоже, проект все еще активно разрабатывается).
Ответ №2:
Поскольку код «крадет» записи из канала, оставляя их указывающими на их родительский канал (вместо копирования записей, что создало бы независимые версии), может возникнуть проблема с кешем строк. Попробуйте отключить кэш, закомментировав -addStringsCacheToDoc в GDataXMLNode.m
Комментарии:
1. Комментирование кода внутри -addStringsCacheToDoc в GDataXMLNode.m не помогло. Все еще возникают утечки.