我有一個UIViewController(稱爲它)與我已經保留和合成的NSDate實例。保留來自另一個對象的保留變量?
在另一種方法,我創建另一個UIViewController中(稱爲B),並希望通過它的NSDate實例。在B中,我將要使用它。我是否也應該保留並綜合這個實例?我假設B將使用A創建的同一個NSDate實例,並且如果內存不足,可能會在viewDidUnload中刪除A的實例。
在另一方面,如果我保留和合成它,我要釋放它當B的看法已經一去不復返了。當我回到A時,NSDate實例消失了。
那麼,什麼是最好的做法嗎?我應該在B中創建一個新的NSDate對象,並使其與傳入的日期相同?並保留/綜合這個新的實例?
但是在B的viewDidUnload中,NSDate實例被設置爲nil。 A仍然保留它不是一個問題嗎?或者我不應該在viewDidUnload中將其設置爲零? –
'A'和'B'分別維護指向'NSDate'實例的指針。當調用B的'viewDidUnload'時,你將它的_pointer_設置爲'NSDate'實例爲'nil'。實例本身仍然存在於內存中,仍然可以通過'A'訪問。它**是一個問題,如果你沒有先釋放它,將指針設置爲'NSDate'爲'nil'。這將導致內存泄漏,因爲'NSDate'的保留計數將不會正確遞減,因此永遠不會被釋放。 –
關於你是否應該釋放''viewDidUnload'中的'NSDate',否則我認爲這可能是不值得的。由於它仍然由'A'保留,所以如果當'B'的'viewDidUnload'被調用時''A實例仍然存在,它將不會被釋放。因此,你並沒有通過在該方法中釋放它來完成任何事情。 –