在我的应用程序中,我使用委托,以便可以在数据准备就绪时读取数据。弱代表变为零
我打电话给两个班级的代表。这里是我的代码
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
}
}
这种方法我从另一个calss加载。
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类,如果我做了委托引用其做工精细委托变成零,无法看到GetData方法被调用
。但是这会导致内存泄漏。
如何处理这种情况?
你在哪里有A和B的前3行?它们是否像代码片段一样简单地放入类中?如果将它们移动到'viewDidLoad',会发生什么? – Losiowaty
我可以知道这种情况下真正的用例是什么? – CodeChanger
编辑..这3行是在一些方法..不在viewDidLoad @ Losiowaty – Sarah