Я везде искал, пытаясь найти решение этой проблемы. Кажется, ничего не помогает.
Я установил этот базовый тест, чтобы попытаться найти причину, по которой моя память не освобождалась:
if (texture != nil)
{
[texture release];
texture = nil;
}
else
{
UIImage* ui = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]];
texture = [[Texture2D alloc] initWithImage:ui];
}
Теперь я бы поместил это в начальные касания и протестировал, отслеживая использование памяти с помощью инструментов в начале (обычно 11,5 - 12 МБ) после первого прикосновения, при отсутствии существующего объекта текстура создается и память перескакивает на 13,5 - 14
Однако после второго касания память действительно уменьшается, но только примерно до 12,5-13.
Заметный кусок памяти все еще занят.
Я тестировал это в гораздо большем масштабе, загружая по 10 таких больших текстур за раз. Объем памяти подскакивает до 30 МБ и остается там, но при втором касании после освобождения текстур она падает только примерно до 22 МБ.
Я попробовал этот тест в другой раз, загружая изображения с помощью [uiimage imagenamed:], но из-за кеширования, выполняемого этим методом, это означает, что в памяти остаются полные 30 МБ.