在我的应用中,我使用代理来在数据准备好时读取它。
我从两个类中调用代理。以下是我的代码
protocol MyDelegate: class {
func getData()
}
class MyDelegateCalss {
weak var delegate: MyDelegate?
func loadData() {
// doing some actions
if(self.delegate != nil){
self.delegate!.getData!()
}
}
}
在一个类中,我正在加载这个方法到tableview的numberOfSections代理方法中。
class A: UIViewController, MyDelegate {
func somefunc(){
let mydelegatecls : MyDelegateCalss = MyDelegateCalss()
mydelegatecls.delegate = self
mydelegatecls.loadData()
}
func getData(){
// Doing some actions
}
}
我正在从另一个类加载此方法。
class B: UIViewController, MyDelegate {
open func testfunc(){
let mydelegatecls : MyDelegateCalss = MyDelegateCalss()
mydelegatecls.delegate = self
mydelegatecls.loadData()
}
func getData(){
// doing some other stuff
}
}
class C: UIViewController {
func testfunc(){
let b : B = B()
b.testfunc()
}
}
从A类中,我的代理工作得很好。我能够看到 getData 方法被调用。
从B类中,代理变成了 nil,无法看到 getData 方法被调用。
如果我让代理引用起来,它就可以正常工作。但这会导致内存泄漏。
那么,我该如何处理这种情况呢?
viewDidLoad
中会发生什么? - LosiowatyA
和B
上调用testfunc
。 - shallowThought