Я пытался объяснить это вам в другом вопросе.Цикл for НЕ ожидает завершения действий, прежде чем перейти к следующему пункту.Цикл for обрабатывает все 10 ваших элементов мгновенно (почти).Поэтому ожидаемый результат ожидается.Есть несколько способов сделать это, но некоторые из них более сложны, чем другие (например, блоки завершения).Самый простой способ сделать это - просто отслеживать продолжительность в цикле for и ждать, пока эта продолжительность запустит завершение.
В соответствии с вашим кодом, который вы здесь представили, ВСЕ 10 элементов представлены на экране вв то же время, что противоречит последнему вопросу, который вы задали по этой теме.
for x in 0..<10 {
self.run(.wait(forDuration: 1.0)) {
print(x)
}
}
выведет 0,1,2,3,4,5,6,7,8,9 на отдельных строках сразу за 1 секунду после выполнения кода, потому что все строки вцикл обрабатывается все сразу, и перед печатью предлагается подождать 1 секунду.
var delay: double = 1.0
for x in 0..<10 {
self.run(.wait(forDuration: delay)) {
print(x)
}
delay += 1
}
выведет 0,1,2,3,4,5,6,7,8,9 на отдельных строкахЧерез 1 секунду после того, как предыдущий был напечатан, а последний выводил всего 10 секунд, чтобы вывести код, потому что строки цикла обрабатываются одновременно и им предписано ждать БОЛЬШЕ длительностей перед печатью.
var delay: double = 1.0
for x in 0..<10 {
self.run(.wait(forDuration: delay)) {
print(x)
}
delay += 1
}
self.run(.wait(forDuration: delay)) {
print("all done adding objects")
}
это выведет последнюю строку ТОЛЬКО ПОСЛЕ того, как последняя будет завершена, потому что мы подождали необходимое время.