2016-03-07 87 views
0

我有两个视图控制器(vcA和vcB),vcA它是vcB的父对象(我通过addChildViewController在vcA上添加了vcB),在两个控制器中,我有一个强对象声明的对象。在介绍vcB之前,我先说一下vcB.myobject = self.myobject,是否会导致这个保留周期? 从vcB的对象使用弱参数更好?这是一个保留周期(财产)?

+0

有一件事要补充 - 这实际上很容易测试。我用一个快速启发来确定一个保留周期是否存在(可能不完美,所以你的里程可能会有所不同),但只需将NSLog放入你的视图控制器的'dealloc'方法中,并且当你关闭视图控制器时,如果有一个保留周期它将不会被调用。 – Mike

+0

@Mike我测试了你是如何定义的以及它的调用方法,谢谢 –

回答

2

如果对象具有对视图控制器之一的强引用,则会导致保留周期。如果对象没有强烈的引用到任何视图控制器,那么它不会导致保留周期。

+0

击败了我。只要self.myObject没有强大的视图控制器引用,就没问题。 – Mike

+0

@rob mayoff谢谢,我现在更了解这个概念。 –

2

这不是一个保留周期。它只是两个对象(vcA和vcB),对第三个对象有强烈的引用(myObject)。这是正常的和正确的。每个将对第三个对象执行适当的内存管理,并且不会泄漏。

+0

这是我第一次想到但我想确定,谢谢 –