Если вы делаете это в основном потоке пользовательского интерфейса, не используйте waitUntilDone.Сделайте setText, setNeedsDisplay в полном представлении, установите NSTimer для запуска того, что вы хотите сделать, начиная с 1 миллисекунды позже, затем вернитесь из функции / метода.Возможно, вам придется разделить ваши вычисления на части, которые могут быть вызваны таймером по отдельности, возможно, конечный автомат с оператором switch (выберите блок, выполнить блок, увеличить индекс блока, выйти), который вызывается таймером до тех пор, пока это не будет сделано.Пользовательский интерфейс будет перемещаться между вашими кусками расчета и обновлять вещи.Поэтому убедитесь, что ваши чанки достаточно короткие (я использую от 15 до 200 миллисекунд).