У меня есть следующий фрагмент кода, который я использую для масштабирования изображений.Это находится в цикле, который создает и истощает пул автоматического выпуска для каждого прохода.Этот код отлично работает в симуляторе в iOS5.0, в iOS4.3 на iPad или в симуляторе, но в iOS5.0.1 на iPad1 после 50-60 проходов drawInRect начинает использовать память, которая никогда не освобождается.Я звонил из вторичного потока, но теперь вызываю операции масштабирования в главном потоке.
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Я что-то не так делаю или это ошибка iOS5.0.1?
Обновление: я перепробовал много тестов.Мне удалось доказать, что точно такой же код, скомпилированный с XCode 4.0, прекрасно работает на том же iPad.Тот же код, скомпилированный с XCode 4.2.1, вызывает состояние нехватки памяти.Эта процедура масштабирования вызывается в фоновом потоке.Я написал другую процедуру масштабирования с использованием низкоуровневых графических вызовов.Это не течет с XCode 4.0, но действительно течет, когда в моем приложении с XCode 4.2.1.Точно такая же подпрограмма и дерево вызовов, запущенные в отдельном проекте, похоже, не вызывают утечку (много) памяти в XCode 4.2.1.Я жду, чтобы услышать от Apple об этом.В то же время мне нужно использовать XCode 4. Единственный установочный образ, который у меня есть, требует Snow Leopard, что означает, что я использую свою древнюю 5,5-летнюю машину.Спасибо
Обновление 1/2012 Это, кажется, происходит, только если приложение запускается из XCode.Тот же исполняемый файл, запущенный на iPad, не имеет утечки.В другом приложении с той же процедурой утечки не наблюдается.
Я открыл отчет об ошибках в Apple и отправил им проект, который воспроизводит проблему.Я не ожидаю, что это будет решено в ближайшее время, но это не кажется таким распространенным, как я первоначально думал.
Обновление 6/2012 Несмотря на то, что Apple отправила минимальный проект, который воспроизвел проблему, они утверждают,чтобы иметь возможность воспроизвести проблему и не добиваться прогресса в этом.