在For循环中使用performSelector?苹果手机

时间:2011-12-29 14:52:36

标签: iphone objective-c xcode multithreading for-loop

我有一个数组(在下面的代码中称为数组),其中包含许多MyView对象。我试图在For循环中迭代这些对象并逐个添加它们作为子视图,每个都延迟一秒。下面的代码的问题是在延迟一秒后立即添加所有对象。任何人都可以建议我如何纠正?

提前谢谢。

- (void)startMethod {

    for (MyView * myview in array) {

        [self performSelector:@selector(addSubView:) withObject:myview afterDelay:1];
    }
}

- (void)addSubView : (UIView *)view {
    [soundController playSound];
    [self.view addSubview:view];
}

4 个答案:

答案 0 :(得分:1)

执行循环的时间不足以延迟选择器执行。您可能需要使用例如计数器来延迟自己。

-(void)startMethod {
    NSUInteger i = 0;
    for (MyView * myview in array) {
        i += 1;
        [self performSelector:@selector(addSubView:)
                   withObject:myview
                   afterDelay:i];
    }
}

答案 1 :(得分:0)

- (void)startMethod {

  int i = 1;
  for (MyView * myview in array) {
    [self performSelector:@selector(addSubView:) withObject:myview afterDelay:i];
    i++;
  }
}

答案 2 :(得分:0)

实际上,它非常简单:

- (void)startMethod {
    int seconds = 0;
    for (MyView * myview in array) {
        [self performSelector:@selector(addSubView:) withObject:myview afterDelay:++seconds];
    }
}

答案 3 :(得分:0)

简单解决方案:在循环的每次迭代后将延迟增加一秒。