Я отслеживал, почему ссылки на NSObject, хотя и были явно выпущены, все еще отображаются в ObjectAlloc. Фактически, мы сократили NSObject до базовой оболочки, с [[myObject alloc] init], сразу за которым следует [myObject release], и это не похоже на то, что оно выпускается в ObjectAlloc. Это большая проблема с приложением NavigationController, которое выдвигает / выдвигает несколько контроллеров представлений, поскольку недавно запущенные контроллеры представлений не выпускаются из-за этих «невыпущенных» ссылок NSObject. Hmmmmmm.
Я мог бы выложить свой код здесь и получить кучу «у вас таких, которые никогда никуда не денутся. Авто-релиз бассейнов, бла-бла.
Итак, давайте посмотрим на пример приложения SeismicXML от Apple ... запустите его в ObjectAlloc / Leaks. Очень простой в getEarthquakeData:
XMLReader *streamingParser = [[XMLReader alloc] init];
[streamingParser parseXMLFileAtURL:[NSURL URLWithString:feedURLString] parseError:&parseError];
[streamingParser release];
Я вижу тонну мусора, лежащего в ObjectAlloc из XMLReader, несмотря на его выпуск. Бьюсь об заклад, если мы добавим кнопку «Обновить» в это приложение, чтобы снова вызвать «getEarthquakeData», мы бы потерпели крах приложения в течение 5 обновлений.
Есть мысли?