SKAction runAction: блок завершения не вызван

#sprite-kit #skaction #completion-block

#набор спрайтов #skaction #завершение-блок

Вопрос:

У меня есть игра, которая сделана в SpriteKit. Я создал его на основе 7.1 SDK, но теперь мне нужно заставить его работать и на 7.0. Итак, все в порядке, за исключением того, что один из моих блоков завершения не запускается в версии 7.0. Вот код:

 [self.strechableArmSprite runAction:[SKAction rotateToAngle:0 duration:0] completion:^{
                [self.warriorPhysicalHand removeFromParent];
                [self.warriorHand removeFromParent];
                [self runAction:self.slapReverseAction completion:^{
                    completionBlock();
                }];
}];
  

slapReverseAction Действие представляет собой простую анимацию:

 sumoWarrior.slapReverseAction = [SKAction runBlock:^{
    [sumoWarrior runAction:sumoWarrior.slapReverseSumoAction];
    [sumoWarrior.strechableArmSprite removeFromParent];
}];
  

Есть идеи, почему completionBlock() не вызывается в iOS 7.0?

Комментарии:

1. Какой блок не запущен? runBlock или completionBlock() в 1-м фрагменте кода или runBlock во 2-м фрагменте кода? Может быть, вы удаляете узел, на котором выполняется действие? В любом случае вы выполняете removeFromParent изнутри блока.

2. Функция completionBlock() в 1-м фрагменте кода не запущена. Что меня смущает, так это то, что это сработало на iOS 7.1, и в списке изменений для Sprite Kit нет ничего, говорящего о том, что блоки и действия выполняются по-другому на iOS 7.1.