Утечка памяти клиента GData Objective C - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть метод, в котором я получаю записи 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

но решение не решает проблему.

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Поскольку код «крадет» записи из канала, оставляя их указывающими на их родительский канал (вместо копирования записей, которые могли бы создать независимые версии), может быть проблема с кэшем строк.Попробуйте отключить кеш, закомментировав -addStringsCacheToDoc в GDataXMLNode.m

0 голосов
/ 27 апреля 2011

Похоже, что это может быть не ваш код, но в клиентской библиотеке было несколько других потоков по той же проблеме. У этого есть обходной путь, но я сам не пробовал.

Другие возможные варианты - обновить до последней версии (1.12 был выпущен 11 апреля 2011 г.), принятьпосмотрите на источник и попробуйте отследить вашу проблему или отправьте проблему (похоже, проект все еще активно разрабатывается).

...