你走错了路。尝试休眠一种方法不是解决此问题的方法。您希望将任务分解为要连续执行的步骤,并且仅在前一步完成后执行每个步骤。
假设您有一个名为“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
}