Быстрое делегирование - когда использовать слабый указатель на делегат
Может кто-нибудь объяснить, когда и когда не следует использовать «слабое» назначение для указателя делегата в Swift, и почему?
Насколько я понимаю, если вы используете протокол, который не определен как класс, вы не можете и не хотите назначать свой указатель делегата для слабого.
protocol MyStructProtocol{
//whatever
}
struct MyStruct {
var delegate: MyStructProtocol?
}
Тем не менее, когда ваш протокол определен как протокол типа класса, вы хотите установить свой делегат на слабый указатель?
protocol MyClassProtocol:Class{
//whatever
}
class MyClass {
weak var delegate: MyClassProtocol?
}
Я прав? В быстром руководстве Apple есть примеры протокола классов, в которых не используются слабые назначения, но в моем тестировании я вижу сильные циклы ссылок, если на моих делегатов нет слабых ссылок.