Объект target-c не получает dealloc:ed
У меня проблема с объектом, который не был освобожден в target-c. Я почти уверен, что это потому, что он где-то сохраняется, но я не знаю, где (проверка retainCount, где он должен быть 0, возвращает 1). Я много раз просматривал свой код, но не вижу, что его удерживает, и что я не выпускаю. Может быть даже ошибка в рамках, которые я использую.
Как бы вы справились с чем-то вроде этого? Я подумал, что, возможно, вы могли бы поискать в памяти и посмотреть, что указывает на этот объект, значительно упростив выяснение, почему это так, но я не совсем уверен, как этого достичь. Может быть, другое решение?
3 ответа
Инструменты великолепны, и могут обнаруживать протекшие объекты, если и когда они просочились, но в подобных случаях я предлагаю вам сначала использовать Статический анализатор XCode, новый в XCode 3.2 со Snow Leopard. (Если вы используете Leopard, вы можете использовать версию для командной строки.) Статический анализ позволяет обнаружить множество проблем, даже не выполняя ваш код, и во многих случаях его гораздо проще использовать, чем Instruments.
Переопределите -retain и -release, затем установите точки останова, чтобы увидеть, кто их вызывает.