DispatchQueue и [слабая самооценка] рабочие элементы. Нужно ли [слабое я]? - PullRequest
1 голос
/ 29 мая 2019

У меня есть собственный класс, который использует DispatchQueue.

class MyCustomClass {

    func fetch(fromURL url: URL) {
        DispatchQueue.global().async { [weak self] in 
            // workItem stuff where self? is called
        }
    }

}

Нужно ли [слабое я]?Закрытие workItem ссылается на экземпляр MyCustomClass, поэтому я вижу эту сильную ссылку, но хранит ли экземпляр MyCustomClass ссылку на вложенный блок workItem, который передается async ()?Кажется, что нет, поэтому [слабое я] не нужно в этом случае?

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

но сохраняет ли экземпляр MyCustomClass ссылку на вложенный блок workItem, который передается async ()?

Не из этого примера, нет.

Однако, если экземпляр MyCustomClass имеет DispatchQueue, который использовался вместо глобальной очереди, то это будет строго указывать время работы до его завершения.

2 голосов
/ 29 мая 2019

Нет, он не нужен, синглтон DispatchQueue.global()

DispatchQueue.global().async

не содержит строгой ссылки на self, GCD не вызывает циклы сохранения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...