Как я могу узнать, вызывается ли dealloc для объекта uikit или для любого объекта, созданного не мной

Я думаю, что у меня UIImage, который имеет более высокий счет сохранения, чем он должен был, и я, вероятно, утечка памяти. Я использую это изображение в качестве эскиза, чтобы установить пользовательский фон для uibutton. Таким образом, uibutton держит ссылку на него, и я тоже. Но вместо 2 retainCount равен 3. Нужно ли создавать собственный производный класс UIImage и переопределять dealloc, если я хочу разместить там сообщение журнала, а затем изменить используемый класс из UIImage на мой класс, или есть более простой способ?, Заранее спасибо.

3 ответа

Решение

Используйте категорию в целевом классе, чтобы переопределить dealloc и установить для него точку останова.

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCategories.html

Я бы посоветовал вам использовать инструмент "Утечки" в инструментах. Он сообщит вам, если у вас есть утечка или нет, и предоставит вам всю необходимую информацию.

Обновить:

Я только что смотрел видео WWDC 2010 "Будущее для проверки вашего приложения", где инженер Apple утверждает, что в OS 2.x [UIImage imageNamed:] на самом деле утечки с сохранением на 1 больше, чем должно быть. Так что, если ваше устройство работает под управлением iPhone OS 2.x, вот почему!

Вы знаете, что объект протекает? В большинстве случаев это плохая идея - делать поспешные выводы на основе количества записей. Используйте Build & Analyze, Leaks и т. Д., Чтобы определить, есть ли у вас проблемы.

Если вы действительно хотите подкласс и войти dealloc Вы можете, но что это на самом деле собирается сказать вам?

Другие вопросы по тегам