Мне нужен блок autoreleasepool внутри DispatchQueue.main.async

Использование swift 3 в Xcode 8.2.1 для приложения iOS.

Я понимаю, что мне нужен блок autoreleasepool при отправке некоторой обработки в новый поток. Но нужно ли это, когда отправляешь обратно на основной поток?

Предположим, что мы находимся в основном потоке и делаем следующее:

DispatchQueue.global(qos: .background).async { autoreleasepool { //***** do something in the background } // autoreleasepool DispatchQueue.main.async { //***** do something on the main thread when background job is done //***** does this something need to be enclosed in an autoreleasepool block ? } // DispatchQueue.main.async } // DispatchQueue.global 

Вы не создаете новые потоки, используя GCD ( dispatch семейства функций). Это системные очереди, которые уже существуют, и вам не нужны дополнительные пулы автозапуска для них.

Если вы должны вручную использовать NSThread или Thread в Swift, вам придется беспокоиться об этом, но обычно вам это не нужно для относительно продвинутой обработки фона.

  • Swift 3: Какой самый безопасный способ развернуть дополнительные значения из массива?
  • Невозможно преобразовать значение типа «» в ожидаемый тип аргумента «String»: при добавлении массивов для получения данных из Fireabse в ячейке таблицы
  • iOS Crash: libswiftAssetsLibrary.dylib не загружен
  • UICollectionView изменение макета выбранного элемента и рамки / ограничений
  • Проверить уровень заряда батареи в фоновом режиме?
  • IOS rightBarButtonItem в UINavigationController в быстрой
  • Фото с пользовательской камерой Swift 3
  • Круговая диаграмма с использованием библиотеки диаграмм с iOS swift 3
  • Swift: Как удалить нулевое значение из словаря?
  • Совместное использование изображения с помощью UIActivityViewController
  • Как легко свернуть вертикальное пространство вокруг метки, когда его текст равен нулю?
  • Давайте будем гением компьютера.