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

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

Ответы [ 3 ]

2 голосов
/ 17 июня 2010

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

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

1 голос
/ 17 июня 2010

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

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

1 голос
/ 17 июня 2010

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

Обновление:

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

...