iPhone: утечка памяти в этом коде? - PullRequest
0 голосов
/ 14 декабря 2010

Я использую в коде два объекта, т.е. pagesUrl и pagesXmlParser, и после их использования я освобождаю эти два объекта.Он работает хорошо, но показывает их в утечках памяти.Когда я попытался проверить это, я проверил счетчик ссылок этих объектов и показывал «1» даже после того, как объекты были освобождены.Кто-нибудь может мне помочь, как устранить эту утечку и как освободить эти конкретные объекты в следующем коде.

-(void)loadPagesForChapter:(NSString *)path{
// have to parse the pages xml for this chapter

  NSURL *pagesUrl = [[NSURL alloc] initFileURLWithPath:[self pagesXmlPath:path]];

  NSXMLParser *pagesXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:pagesUrl];

  PagesAccumulator *pageLoader = [[PagesAccumulator alloc] init];
  pagesXmlParser.delegate = pageLoader;

  [pagesXmlParser parse];

// parsing pages done
// get the pages array
self.arrayOfPages = pageLoader.arrayOfPages;

    [pageLoader release];
[pagesXmlParser release];
[pagesUrl release];
NSLog(@"pagesurl retain count is:%d",[pagesUrl retainCount]);
    NSLog(@"pagesxmlparser retain count is:%d",[pagesXmlParser retainCount]);
}

Заранее благодарен за любую помощь.

1 Ответ

4 голосов
/ 14 декабря 2010

Игнорировать счет сохранения

Тот факт, что объект имеет счет сохранения> 0, не означает, что он также не освобожден автоматически:)

Ваш код выглядит нормальномне.

Если это действительно утечка, я бы посмотрел на вашу реализацию PageLoader, чтобы увидеть, есть ли сохранение в одном из методов NSXMLParserDelegate, который предотвращает освобождение парсера (что приведет к утечке URL-адреса какхорошо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...