你走错了路。尝试休眠一种方法不是解决此问题的方法。您希望将任务分解为要连续执行的步骤,并且仅在前一步完成后执行每个步骤。
假设您有一个名为“cardCounter”的变量和一个名为“cardMax”的变量。然后你有一个叫做'dealCard'的方法。在viewDidAppear您将“cardCounter”初始化为零并将“cardMax”初始化为4(或者要发多少张牌。然后您调用“dealCard”方法。
(实际上,您可能需要一个被调用的方法newGame或其他东西,因为您可能想要拥有多个游戏,并且您不想将您的游戏设置与viewDidAppear事件联系起来。因此,viewDidAppear您可以调用“newGame”并在那里进行初始化。)
- (void)dealCard {
  cardCounter++;
  if (cardCounter > cardMax){
   // all cards are dealt
   // call some method to start game
   // or do any other set up;
  } else {
   // call some method to animate the card
   // using core animation with a completion handler?
   // using a ^block with a completion handler?
   // either way, in the completion handler call
   // 'dealCard' again
}