185 похожих чатов

Подскажите плиз по делегатам: мы же НЕ всегда пишем weak

delegate = self? Вот этот вик

3 ответов

22 просмотра

Наверняка найдётся ситуация, когда можно и не weak, но я бы всегда писал, чтобы сильные ссылки не плодить

делегаты всегда нужно писать с weak, потому что это ссылка двух объектов друг на друга без weak ссылка будет сильной и получите retain cycle

Дамир
делегаты всегда нужно писать с weak, потому что эт...

Если класс делегата не содержит в себе будующего делегирующего, то никакого цикла ссылок не будет. Например, если в рамках какого-нибудь модуль билдера создаётся отдельно делегирующий и прокидывается в него делегат. Также не будет цикла ссылок, если делегирующий объект объявлен не в скоупе класса, а, например, в каком нибудь его методе, где он будет освобождён из памяти по выходу этого скоупа, если не убежал куда то за границы Также ничего страшного не будет, если будет цикл ссылок, но делегат будет объявлен в качестве опционала, если можно поймать момент и назначить опционалу значение nil. Тогда он отпустит делегата из памяти и все деинициализируется

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта