объект target-c не получает dealloc: ed - PullRequest
1 голос
/ 21 сентября 2009

У меня проблема с объектом, который не был освобожден в target-c. Я почти уверен, что это потому, что он где-то сохраняется, но я не знаю, где (проверка retainCount, где он должен быть 0, возвращает 1). Я много раз просматривал свой код, но не вижу, что его удерживает, и что я не выпускаю. Может даже быть ошибкой в ​​фреймворках, которые я использую.

Как бы вы справились с чем-то вроде этого? Я подумал, что, возможно, вы могли бы поискать в памяти и посмотреть, что указывает на этот объект, значительно упростив выяснение, почему это так, но я не совсем уверен, как этого достичь. Может быть, другое решение?

Ответы [ 3 ]

8 голосов
/ 21 сентября 2009

Инструменты великолепны и могут улавливать протекшие объекты , если и когда они протекают , но в подобных случаях я рекомендую сначала использовать Статический анализатор Xcode , новый в Xcode 3.2 со Snow Leopard. (Если вы используете Leopard, вы можете использовать версию командной строки .) Статический анализ позволяет обнаружить множество проблем, даже не выполняя ваш код, и во многих случаях его гораздо проще использовать, чем инструменты.

5 голосов
/ 21 сентября 2009

Вы пробовали Инструменты ?

2 голосов
/ 21 сентября 2009

Переопределите -retain и -release, затем установите точки останова, чтобы увидеть, кто их вызывает.

...