2
我一直對核心數據實體感到困惑。既然你從不分配它們,你需要保留它們嗎?當視圖控制器有一個實體作爲其屬性之一時,它應該是弱當另一個視圖控制器分配實體但強當視圖控制器設置屬性本身?使用ARC時,Core Data中的實體應該是強還是弱?
我一直對核心數據實體感到困惑。既然你從不分配它們,你需要保留它們嗎?當視圖控制器有一個實體作爲其屬性之一時,它應該是弱當另一個視圖控制器分配實體但強當視圖控制器設置屬性本身?使用ARC時,Core Data中的實體應該是強還是弱?
核心數據實體只是一個對象,因此您應該遵循memory management rules。當你需要它們時,你需要retain
實體,當你不再需要時需要release
。
例如:使用sqlite後端,核心數據將緩存加載的數據,以儘量減少發送到數據庫的請求量。但它不能保存所有的記錄,它應該知道你使用哪些實體,哪些不這樣做,因此它可以釋放未使用和空閒的內存。在使用weak
屬性的情況下,您最終可能會得到垃圾指針或零而不是實際的對象。
電弧和保持/釋放之間有直接聯繫,因爲ARC只是在幕後爲您做。聲明成員變量爲'strong'意味着編譯器會爲你保留/釋放它,'weak'意味着賦值。 –
是的,但你說:「當你需要它們時你保留實體,當你不再需要它們時釋放它們。」這聽起來像他自己應該這樣做...... – lnafziger
+1我明白你爲什麼要解釋保留/釋放,然後跳入強/弱的ARC。感謝您的深思熟慮的迴應。 –