Для загрузки разных изображений я использую метод UIImage ImageNamed, я сталкивался с некоторыми сообщениями, указывающими, что это не очень хорошая идея, так как метод приводит к автоматическому освобождению изображений, что создает проблемы с памятью.
Нет, это не проблема.Все, что не связано с тем, что вы звоните alloc
, init
[WithSomethingOrOther:
] и release
, самостоятельно получит изображение автоматически.
Проблема в том, что imageNamed:
продолжает владетьизображение после того, как оно вручает его вам.Каждое изображение, полученное вами из imageNamed:
, остается в этом кэше, постоянно связанном с этим именем.Это не просто метод «загрузить это изображение»;это метод «загрузить это изображение и сохранить его навсегда *».
* Где «навсегда» означает «до конца моего процесса».
Я хотел бы знатьесли я ищу правильное место для ошибки.Где можно найти такое необычное потребление памяти?
In Instruments.Он точно скажет вам, сколько объектов каждого типа вы создаете, и сколько объектов памяти каждого вида занимают, и вы можете отсортировать этот список, чтобы определить, что потребляет память.Затем вы можете углубиться в каждый класс и в каждый объект, чтобы определить, что поддерживает объекты в живых после того, как они вам понадобятся.