首先在这里,所以试图让协议正确......我所做的工作,数据和视图显示正确,但内存没有解除分配(在分配/解除分配多年后仍习惯使用ARC ),我正在努力找出正确的策略。基于文档的应用。创建doc时,将实例化视图控制器,这会创建多个视图,这些视图需要相互引用大小/位置/方法,并且所有这些视图都需要访问doc数据。
class MyDoc: UIDocument {
var data: Int
etc...
}
class MyController: UIViewController {
var doc: myDoc! // code which creates MyDoc instance assigns self to this property
var thisView1: MyView1!
var thisView2: MyView2!
thisView1 = MyView1(...)
thisView2 = MyView2(...)
thisView1.theOtherView2 = thisView2
thisView2.theOtherView1 = thisView1
thisView1.doc = self.doc
thisView2.doc = self.doc
}
class MyView1: UIView {
var theOtherView2: MyView2!
var doc: MyDoc!
}
class MyView2: UIView {
var theOtherView1: MyView1!
var doc: MyDoc!
}
我认为我没有排除任何有意义的东西。将thisView1和thisView2相互分配会产生一个强大的参考周期,对吧?根据Swift编程语言,我尝试将一个无主属性组合在一个隐式解包的属性上,但是仍然遇到了视图的init()方法的问题。使用弱引用,然后一直打开可选项(虽然我确保在从viewController继续之前有一个有效的值)唯一可行的吗?我已经阅读了很多解释,每个新的解释现在让我更加困惑。
谢谢!