使用NSTimer会更有效。
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:numberOfSeconds
target:self
selector:@selector(methodToAddImages:)
userInfo:nil
repeats:YES];
这将基本上methodToAddImages
以指定的时间间隔重复调用。要停止调用此方法,请调用[NSTimer invalidate]
(请记住,无法重用无效的计时器,并且您需要创建一个新的计时器对象以防重复此过程)。
在里面methodToAddImages
你应该有代码来遍历数组并添加图像。您可以使用计数器变量来跟踪索引。
另一种选择(我的建议)是拥有该数组的可变副本并添加lastObject
为子视图,然后将其从数组的可变副本中删除。
您可以通过首先以相反的顺序制作 mutableCopy 来做到这一点,如下所示:
NSMutableArray* reversedImages = [[[images reverseObjectEnumerator] allObjects] mutableCopy];
您的 methodToAddImages 看起来像:
- (void)methodToAddImages
{
if([reversedImages lastObject] == nil)
{
[timer invalidate];
return;
}
UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRectMake(40, 40, 40, 40))];
imageView.image = [reversedImages lastObject];
[self.view addSubview:imageView];
[reversedImages removeObject:[reversedImages lastObject]];
}
我不知道您使用的是 ARC 还是 Manual Retain Release,但这个答案是假设 ARC 编写的(基于您问题中的代码)。