UIImage ImageNamed метод - PullRequest
       32

UIImage ImageNamed метод

0 голосов
/ 30 января 2011

В моем приложении я загружаю несколько изображений в UIScrollView и выделяю часть вида прокрутки, используя подпрограмму Core Graphics.Я использовал CGImageRelease и CGContextRelease для управления памятью во время подпрограмм.

Когда я запускаю приложение с использованием инструментов (распределение), я вижу, что потребление памяти продолжает расти с каждым движением scrollView.Это в какой-то момент приводит к тому, что приложение становится очень медленным.

Для загрузки разных изображений я использую метод UIImage ImageNamed, я сталкивался с некоторыми сообщениями, указывающими, что это не очень хорошая идея, так как метод приводит к автоматическому освобождениюизображения, которые создают проблемы с памятью.Я хотел бы знать, ищу ли я правильное место для ошибки.Что может быть возможным местом для поиска этого необычного потребления памяти?

Кроме того, используя распределение инструментов, я могу просто видеть, что увеличение памяти позволяет точно определить код, где происходят эти распределения?

Заранее спасибо за помощь!

Best DKV

1 Ответ

0 голосов
/ 31 января 2011

Для загрузки разных изображений я использую метод UIImage ImageNamed, я сталкивался с некоторыми сообщениями, указывающими, что это не очень хорошая идея, так как метод приводит к автоматическому освобождению изображений, что создает проблемы с памятью.

Нет, это не проблема.Все, что не связано с тем, что вы звоните alloc, init [WithSomethingOrOther:] и release, самостоятельно получит изображение автоматически.

Проблема в том, что imageNamed: продолжает владетьизображение после того, как оно вручает его вам.Каждое изображение, полученное вами из imageNamed:, остается в этом кэше, постоянно связанном с этим именем.Это не просто метод «загрузить это изображение»;это метод «загрузить это изображение и сохранить его навсегда *».

* Где «навсегда» означает «до конца моего процесса».

Я хотел бы знатьесли я ищу правильное место для ошибки.Где можно найти такое необычное потребление памяти?

In Instruments.Он точно скажет вам, сколько объектов каждого типа вы создаете, и сколько объектов памяти каждого вида занимают, и вы можете отсортировать этот список, чтобы определить, что потребляет память.Затем вы можете углубиться в каждый класс и в каждый объект, чтобы определить, что поддерживает объекты в живых после того, как они вам понадобятся.

...