Утечка памяти клиента GData Objective C

#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 не помогло. Все еще возникают утечки.