Более простой ответ.
function ($quantity) use ($tax, &$total) { .. };
$tax
внутри замыкания не имеет внешнего эффекта, если только он не является указателем, как объект. &$total
. Таким образом, изменение значения $total
оказывает внешнее воздействие, значение исходной переменной изменяется. Как отметил @Mytskine , вероятно, лучшим подробным объяснением является RFC для замыканий . (Проголосуйте за него.)
Поможет ли вам выполнить [myTable performSelectorOnMainThread: @selector (reloadData) withObject: nil waitUntilDone: NO]
?
Проблема, о которой вы упомянули, может возникнуть, если вы не выполняете обновления графического интерфейса пользователя из основного потока.