有人可以解释何时何时不对Swift中的委托指针使用"弱"赋值,为什么?
我的理解是,如果你使用一个未定义为类的协议,你不能也不想将你的委托指针指向weak.
protocol MyStructProtocol{
//whatever
}
struct MyStruct {
var delegate: MyStructProtocol?
}
Run Code Online (Sandbox Code Playgroud)
但是,当您的协议被定义为类类型协议时,您是否要将您的委托设置为弱指针?
protocol MyClassProtocol:Class{
//whatever
}
class MyClass {
weak var delegate: MyClassProtocol?
}
Run Code Online (Sandbox Code Playgroud)
我对么?在Apple的快速指南中,类协议示例并未使用弱分配,但在我的测试中,如果我的代表没有被弱引用,我会看到强大的引用周期.
delegates memory-leaks memory-management swift strong-reference-cycle
在闭包中引用它时,我们完全忘记了捕获 self 及其属性。(注意:编译器没有警告我们。)现在我们的应用程序充满了强引用循环。为了修复它们,我们必须将捕获列表一一添加到每个闭包中。
我们如何才能找到所有这些?我想搜索,in但结果太多,包括评论,循环。
好的老目标 C 会帮助我搜索^. 它会警告我们...