Я исправил отступ в вашем коде, надеюсь, я правильно понял. Улучшенный отступ делает очевидной одну проблему:
Вы отпускаете уже освобожденный объект, ваш пул.
Попробуйте переместить NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
внутрь цикла.
Но, скорее всего, вы должны сначала избавиться от петли.
Другая проблема в том, что вы не устанавливаете img в ноль. Если в первом запуске цикла допустим img
, код будет считать его действительным для всех последующих циклов. Если вы удаляете img где-то из кэша (и объект, на который указывает img, освобождаются), вы отправляете retain в освобожденный объект, когда пытаетесь добавить его в кеш.
Добавьте img = nil;
в начале вашего цикла.