UITableView, тянущий проблемы, когда ReloadData называют

Более простой ответ.

function ($quantity) use ($tax, &$total) { .. };

  1. Замыкание - это функция, назначенная переменной, поэтому вы можете передавать ее вокруг
  2. Замыкание - это отдельное пространство имен, обычно вы не можете переменные, определенные вне этого пространства имен. Приходит ключевое слово use :
  3. use позволяет получить доступ (использовать) последующие переменные внутри замыкания .
  4. Использование является ранним связыванием. Это означает, что значения переменных копируются после определения замыкания. Таким образом, изменение $tax внутри замыкания не имеет внешнего эффекта, если только он не является указателем, как объект.
  5. Вы можете передавать переменные в виде указателей, как в случае &$total. Таким образом, изменение значения $total оказывает внешнее воздействие, значение исходной переменной изменяется.
  6. Переменные, определенные внутри замыкания, также недоступны извне замыкания.
  7. Затворы и функции имеют одинаковую скорость. Да, вы можете использовать их во всех сценариях.

Как отметил @Mytskine , вероятно, лучшим подробным объяснением является RFC для замыканий . (Проголосуйте за него.)

5
задан Jasarien 24 June 2009 в 10:16
поделиться

1 ответ

Поможет ли вам выполнить [myTable performSelectorOnMainThread: @selector (reloadData) withObject: nil waitUntilDone: NO] ?

Проблема, о которой вы упомянули, может возникнуть, если вы не выполняете обновления графического интерфейса пользователя из основного потока.

19
ответ дан 18 December 2019 в 08:30
поделиться