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