看板 MacDev 關於我們 聯絡資訊
在不使用GC前提下 當AB兩物件互相參考時 會互相retain對方 而造成無法在不使用的時候順利release 而造成memory leak 例如 A和B都是相同類別 它都含有一個instance variable叫做list (為NSMutableArray) 而A的list中含有B B的List中含有A 然後C物件含有ref.能夠操作A 因此這個情況之下A的retainCount為2 B的retainCount為1 當C物件進行dealloc時 會releaseA 此時A的retainCount為1 結果A和B就成了記憶體內的孤兒.... 這個情況通常會怎麼解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.59.127.151
leondemon:我記得之前似乎有討論過 不過一時找不到... 05/02 21:02
zonble:如果是兩邊互相參照,通常某一邊是 delegate 05/03 11:12
zonble:delegate 用 assign,不要用 retain 05/03 11:12
leondemon:因為這兩個物件都是用array的ivar去保留該指標... 05/03 20:30
leondemon:所以必然會互相retain... 如果array放物件時不會retain 05/03 20:32
leondemon:那就比較容易解決了... Orz 05/03 20:32
raxcat:可以查一下memory那doc的weak reference看看 05/04 22:11