Я использую прибор для проверки утечки.Утечка всегда указывает на
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
Почему?
Потому что это строка кода, где выделение, которое просочилось произошло.Поскольку вы правильно уравняли оба подразумеваемых значения retain
в этом коде (когда-то здесь, один раз в -dealloc - предложение mmccomb о прямом назначении без autorelease
хорошо, но не решит проблему), утечка в другом месте.
В частности, утечка будет retain
, которая не будет сбалансирована release
.Таким образом, где-то вы сохраняете объект, а не отпускаете его.
Инструменты могут использоваться для отображения всех событий сохранения / освобождения любого данного объекта.Используйте это и просмотрите список событий, связанных с вашим утечкой объекта.Будет еще один удержать, чем освободить.Соедините с удержаниями и выпусками.Причиной является то, что сохранение остается без сбалансированного выпуска.
Я написал статью об использовании анализа кучи в приборах для обнаружения злоупотребления памятью.Он включает обсуждение и снимки экрана, на которых показан инспектор событий сохранения / выпуска, и они будут применимы.