あなたは間違った道を進んでいます。メソッドをスリープさせようとすることは、これにアプローチする方法ではありません。タスクを連続して実行するステップに分割し、前のステップが完了した後にのみ各ステップを実行する必要があります。
「cardCounter」という変数と「cardMax」という変数があるとします。次に、「dealCard」というメソッドがあります。「viewDidAppear
cardCounter」を 0 に、「cardMax」を 4 に初期化します (または、配られるカードの数に制限はありません。次に、「dealCard」メソッドを呼び出します。
(実際には、複数のゲームが必要になる可能性が高く、ゲームのセットアップをイベントnewGame
に結び付けたくないため、おそらく呼び出されるメソッドまたは何かが必要になるでしょう。そのため、 「newGame」を呼び出してそこで初期化を行います。)viewDidAppear
viewDidAppear
- (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
}