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