Должно ли сохраняться увеличение счетчика после поворота изображения? - PullRequest
1 голос
/ 19 марта 2012

Я использую следующий код для поворота изображения

http://www.platinumball.net/blog/2010/01/31/iphone-uiimage-rotation-and-scaling/

это одно из немногих преобразований изображения, которое я делаю перед загрузкой изображения на сервер, у меня также есть некоторые другие преобразования: нормализация, обрезка, изменение размера.

Каждое из преобразований возвращает (UIImage*), и я добавляю эти функции, используя категорию. Я использую это так:

UIImage *img = //image from camera;
img = [[[img normalize] rotate] scale] resize];
[upload img];

После выбора 3 ~ 4 фотографий с камеры и выполнения одного и того же кода каждый раз, когда в XCode появляется сообщение с предупреждением о памяти.

Я предполагаю, что у меня где-то есть утечка памяти (хотя я использую ARC). Я не очень опытен в использовании средств отладки xCode, поэтому я начал печатать счетчик хранения после каждого метода.

UIImage *img = //image from camera;
img = [img normalize];
img = [img rotate];  // retain count increases :(
img = [img scale];
img = [img resize];

Единственной операцией, которая увеличивает счет удержания, является вращение. Это нормально?

1 Ответ

2 голосов
/ 19 марта 2012

Единственной операцией, которая увеличивает счет удержания, является поворот. Это нормально?

Вполне возможно, что вызов UIGraphicsGetImageFromCurrentImageContext() в вашей функции rotate в конечном итоге сохранит изображение. Если так, то это почти наверняка также автоматически выпускает изображение в соответствии с обычными правилами управления памятью Какао. В любом случае, вы не должны беспокоиться об этом. Пока ваша функция rotate сама по себе не содержит несбалансированных вызовов retain (или alloc, new или copy), вы должны ожидать отсутствия утечек. Если вы подозреваете утечку, лучше отследить ее с помощью инструментов, чем смотреть retainCount.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...