Я работаю над графическим эффектом для приложения для iPhone, которое имитирует эффект плазмы с низким разрешением из старых демосценных дней.У меня есть 600 квадратов на экране, которые обновляются как можно быстрее.Так как я использую CoreGraphics (на данный момент), я могу получить очень постоянные 11FPS без замораживания -
НО, когда я пытаюсь добавить один простой просмотр NSArray, iPhone, а также симулятор зависает на несколько секундкаждые несколько секунд.Я запустил это в приборах, и он говорит, что есть утечка - утечка связана с NSAutoReleasePool, но это не очень помогает.(Я создаю NSAutoReleasePool в начале каждого кадра обновления и осушаю пул в конце.)
В процессе удаления я смог сузить его до одной строки, которая вызывает замедление.Эта строка происходит для каждого из 600 блочных спрайтов при каждом обновлении кадра:
//SLOOWWWNESS /LEAKING NSAUTORELEASEPOOL IS here (freezing every second or so)
UIColor *color = [palette objectAtIndex:colorNum];
//BUT DOESNT HAPPEN HERE... (works at full speed)
UIColor *color = [UIColor colorWithRed:0.25f green:0.25f blue:colorNum/15.0 alpha:1.0f];
... где palette - это свойство NSArray в спрайте и содержит список созданных мной объектов UIColor.Этот массив объектов UIColor создается только один раз, когда приложение запускается и все спрайты используют один и тот же массив.
У кого-нибудь есть идеи?