Делегаты со слабой ссылкой становятся равными нулю - PullRequest
0 голосов
/ 13 июня 2019

Я создаю делегата со слабой ссылкой, и мне нужно пройти через пару завершений (замыканий), тогда delegate станет нулевым.Когда я удаляю ссылку weak, она работает нормально.

weak var contentDelegate: ContentDelegate?

На самом деле разрешено ли создавать свойство делегата без ссылки weak в быстрых рекомендациях?Какие недостатки?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

было бы здорово, если бы вы могли поделиться своим кодом.Без кода трудно сказать, но похоже, что у вас есть асинхронные вызовы, и при некотором асинхронном вызове delegate я полагаю, что это контроллер или, возможно, какая-то служба, освобожденная из памяти

, если вы удалите weak, вы будетецикл получения сохранения, когда delegate и владелец этого делегирования держат друг друга в памяти

1 голос
/ 13 июня 2019

На самом деле это позволяет создать свойство делегата без слабых ссылка в быстрых лучших практиках? Какие недостатки?

Да, вы можете создавать делегатов без ссылки weak.

Нет, это не входит в сферу применения лучших практик.

Недостатками, в основном, является риск наличия цикла сохранения, при котором ссылки не освобождаются из памяти, что приводит к утечке памяти.

...