2016-03-07 119 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

這是我第一次想到但我想確定,謝謝 –