Size: a a a

2021 January 03

b

bodich in SwiftBook
Andrey Torlopov
Вот не правда. DispatchQueue.main… разруливает, UIView.animate.. разраливает.
Почему и тут не разрулить?
Если ты в forEach просто делаешь 2+2 тогда не нужно, но если присваиваешь указатель одног объекта в другой на жесткую ссылку, тогда получишь retain как и везде
источник

b

bodich in SwiftBook
Смотря что ты там делаешь короче
источник

AT

Andrey Torlopov in SwiftBook
bodich
Не разруливает. В DispatchQueue.main ты чаще всего передаешь замыкание в метод async, в этом методе ты можешь передать указатель одного класса в другой, создав цикл и банг, у тебя цикл. Нигде ничего не разруливается само.
Dispatch.main.async {
self. что-то там
}

Сработает как надо. Не надо weak писать.

также UIView.animate(…animate: { self.что-то-там…})
тоже отработает без цикла.
источник

b

bodich in SwiftBook
Если просто print(self.value) тогда жесткая ссылка создастся лишь пока не выполнится print и потом отпустит. Но как я говорил, ты можешь там делать присвоения, которые могут создать цикл
источник

b

bodich in SwiftBook
Andrey Torlopov
Dispatch.main.async {
self. что-то там
}

Сработает как надо. Не надо weak писать.

также UIView.animate(…animate: { self.что-то-там…})
тоже отработает без цикла.
Так self там будет не weak, причем тут... Это неявно допишут за тебя [self] in с жесткой ссылкой
источник

AT

Andrey Torlopov in SwiftBook
Короче, надо тяжелую артилерию привлекать. Пойду в англоязычный чат к бородатым дядькам, которые еще  помнят xCode 3.5 :)
источник

AT

Andrey Torlopov in SwiftBook
bodich
Так self там будет не weak, причем тут... Это неявно допишут за тебя [self] in с жесткой ссылкой
так ретейн-цикла там не будет.
источник

b

bodich in SwiftBook
Andrey Torlopov
Dispatch.main.async {
self. что-то там
}

Сработает как надо. Не надо weak писать.

также UIView.animate(…animate: { self.что-то-там…})
тоже отработает без цикла.
Вопрос ты хочешь weak или нет.
источник

AT

Andrey Torlopov in SwiftBook
bodich
Вопрос ты хочешь weak или нет.
я хочу чтобы можно было без гемора писать код и не оборачивать все в [weak self]
источник

b

bodich in SwiftBook
Andrey Torlopov
так ретейн-цикла там не будет.
Ну если ты уверен то гуд. Я ж говорю, зависит от кода. Если ты там присвоишь не то что надо, то можно сделать ретайн цикл легко
источник

AT

Andrey Torlopov in SwiftBook
bodich
Ну если ты уверен то гуд. Я ж говорю, зависит от кода. Если ты там присвоишь не то что надо, то можно сделать ретайн цикл легко
Что значит присвоишь не то что надо? я немного не понял.
источник

b

bodich in SwiftBook
Andrey Torlopov
я хочу чтобы можно было без гемора писать код и не оборачивать все в [weak self]
Скажем так, совершенно не обязательно это писать, за тебя дописывается [self]. БЕЗ WEAK
источник

AT

Andrey Torlopov in SwiftBook
ок. пойду дальше ресерчить
источник

b

bodich in SwiftBook
Andrey Torlopov
Что значит присвоишь не то что надо? я немного не понял.
Ты можешь передать self в какой-то таймер на пол-года, и тогда сильная ссылка на self там застрянет. Это например, вариантов куча
источник

b

bodich in SwiftBook
Поэтому если твой код 100% выполняется мгновенно и self никуда не передается, и замыкание создается лишь сразу в момент выполнения, то weak можешь не писать, захватится сильная ссылка [self] in неявно
источник

b

bodich in SwiftBook
Некорректно сравнивать с [weak self] in, правильно спросить, не нужно ли добавлять [self] in тк неявно будет сильная ссылка захвачена
источник

b

bodich in SwiftBook
Andrey Torlopov
Что значит присвоишь не то что надо? я немного не понял.
Второй вариант, ты можешь передать self в какой-то комплишн хендлер куда-то, почему нет, этот вариант очень реален... А когда комплишн выполнится это вообще неизвестно
источник

AT

Andrey Torlopov in SwiftBook
короче гугл сказал что если это не escape параметр, то можно не оборачивать в weak.
источник

AT

Andrey Torlopov in SwiftBook
(для foreach так). Остальные мои примеры отработают как надо.
источник

b

bodich in SwiftBook
Andrey Torlopov
короче гугл сказал что если это не escape параметр, то можно не оборачивать в weak.
Почему именно про [weak self] вопрос не пойму? Если ты ничего не напишешь то будет сильный [self]
источник