2015-08-15 23 views
0

我有3個對象 - 一個ViewController,另一個VC是ViewController的強大屬性(稱爲VC2),還有一個名爲「Checker」的類,用於檢查動作是否發生在VC2。 「檢查器」只是一個帶類方法的類 - 沒有實例方法。保留循環Objective C與3個對象

當在VC2中發生某個操作時,它會將數據結構發送給處理該數據結構的「檢查器」。我需要將處理後的數據發送回ViewController。我抓取ViewController的實例並通過方法發送它。 ViewController獲取已處理的數據並將其顯示在視圖中。

這是否會造成保留週期或任何其他與內存相關的問題?

+1

這取決於你的實現,特別是你如何解決'ViewController'。 –

+0

@ AminNegm-Awad你是什麼意思?更新了ViewController用數據處理的問題。 – noobsmcgoobs

+0

你如何搶VC? –

回答

2

在尊重你的意見,A是:

拼搶已經存在的對象引用(「已有實例」)不會創建一個保留週期。傳遞到方法的引用不會導致默認很強的借鑑意義:

{ 
    … 
    [Checker doSomethingWith:vc2.referenceToVC1]; // Passing does not retain 
    … 
} 

然而,即使它會和你傳遞之前,將複製的實例引用注入了強勁的局部變量,所有權將是一個短定時器並由ARC自動解決。

{ 
    … 
    VC1 vc1 = vc2.referenceToVC1; // strong reference causing ownership, retain 
    [Checker doSomethingWith:vc1]; 
    … 
    // vc1 and its strong reference is automatically given up, release 
} 

這是因爲局部變量(以及可能的參數VAR,這是類似於局部變量的)是額外引用,但因爲沒有被提及他們,這是毫不保留週期

您沒有保留週期。