Рисунок не выгружается в другой поток, но он откладывается. Когда вы звоните setImage:
, image
ivar представления изменяется, и, скорее всего, сеттер также вызывает setNeedsDisplay:
. Это то, как представление сигнализирует о необходимости перерисовки. Поскольку рисование является дорогостоящим делом, однако, оно выполняется только один раз за проход (в частности, в конце) цикла выполнения, что не происходит до тех пор, пока цикл for
не закончится.
Лучший способ показать серию изображений - это почти наверняка повторяющийся таймер (performSelector:withObject:afterDelay:
также стоит посмотреть). Загрузите все ваши изображения в массив, затем запустите таймер:
[NSTimer scheduledTimerWithTimeInterval:2.5
target:self
selector:@selector(changeDisplayedImage:)
userInfo:nil
repeats:YES];
Тогда действие вашего таймера изменит изображение представления:
- (void)changeDisplayedImage:(NSTimer *)tim {
// currImageIdx is an ivar keeping track of our position
if( currImageIdx >= [imageArray count] ){
[tim invalidate];
return;
}
[viewWindow setImage:[imageArray objectAtIndex:currImageIdx]];
currImageIdx++;
}
Обратите внимание, что за исключением задержки от фактического рисунка, настройка содержимого вида, вероятно, произойдет так быстро, что вы не увидите изображение. Если вы действительно действительно хотите, чтобы ваш вид рисовался немедленно, отправка его display
должна работать (как упомянуто в описании setNeedsDisplay:
).