Да, и поток делает возврат к методу вращения. Хитрость заключается в вызове, который выполняет метод playWinSound
:
[self performSelector:@selector(playWinSound) withObject:nil afterDelay:.5];
Обратите внимание на часть метода afterDelay . Это запланирует вызов playWinSound
в первое доступное время по истечении 0,5 секунд. В частности, вызов будет происходить в начале первого цикла выполнения через 0,5 секунды. Этот метод вызывается внутри уже запущенного цикла выполнения, поэтому playWinSound
не может быть выполнен до тех пор, пока не будет возвращен метод spin
.
Тем не менее, это кажется очень странным способом структурировать программу. Я предполагаю, что они устанавливают winLabel.text
на @""
, чтобы убедиться, что он возвращается к пустой строке, если только он не станет @"Win!"
, но я бы структурировал его совсем по-другому. Тем не менее, именно поэтому он работает.