如何在 Objective-C 中将一段代码 运行 一段时间?

How to run a block of code for a certain amount of time in Objective-C?

所以我有一个绘制正方形的方法,它会随机地只绘制三角形 5 秒,然后 return 绘制正方形。我如何运行 drawTriangle() 持续一定时间,然后摆脱它?

drawShape(){  
   drawSquare();  
   if (arc4random_uniform(50) == 0){
      for 5 seconds{ << how do I implement that part?
         stopDrawSquare();
         drawTriangle();
      }
   }
}

SKAction *draw = [SKAction sequence:@[
                    [SKAction waitForDuration:1 withRange:1],
                    [SKAction performSelector:@selector(drawShape) onTarget:self]
                 ]];              
[self runAction:[SKAction repeatActionForever:draw] withKey:@"drawShape"];

创建 2 个伊娃:

BOOL ready;
BOOL drawTriangle;

将 ready 设置为默认 true,将 drawTriangle 设置为默认 false。

将此代码添加到您的更新方法(或您决定的任何位置)

if(ready == true) {
    if (arc4random_uniform(50) == 0) {
        drawTriangle = true;
        ready = false;
        SKAction *wait0 = [SKAction waitForDuration:5.0];
        SKAction *block0 = [SKAction runBlock:^{
            ready = true;
        }];
        [self runAction:[SKAction sequence:@[wait0, block0]]];
    } else {
        drawTriangle = false;
    }
}

if(drawTriangle == true) {
    NSLog(@"draw triangle");
} else {
    NSLog(@"draw square");
}