У меня проблемы с приложением, в котором память продолжает расти каждый раз при переходе к определенному представлению. Процесс воссоздания этого увеличения памяти:
- Показать контроллер просмотра входа пользователя
- Контроллер Push Home View
- Контроллер представления настроек push-уведомлений
- Выйти из системы (кнопка в контроллере представления настроек) — открывается в контроллере просмотра входа пользователя.
- Войти и нажать Home View Controller
Каждый раз, когда я нажимаю на контроллер Home View (хотя я подтвердил, что предыдущий освобождается), память подскакивает на 6+ МБ. Я профилировал приложение и обнаружил одну явную проблему с категориями VM:ImageIO_PNG_Data и VM:CoreAnimation в Allocations.
Некоторые из них происходят в классе, который я использую под названием Masking View, который рисует указанную часть слоя ниже этого вида. Код, используемый для рисования, приведен ниже:
//Draw project image
CGRect newRect = self.frame;
if (useCustomFrame){
newRect = customFrame;
}
CGImageRef image = CGImageCreateWithImageInRect([self.projectedImage CGImage], newRect);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, rect, image);
// Release Context
CGImageRelease(image);