Re: [問題] 記憶體管理:當兩物件互相參考時...
※ 引述《leondemon (狗狗)》之銘言:
: 在不使用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就成了記憶體內的孤兒....
: 這個情況通常會怎麼解決?
B* b = [B new];//count 1
A* a = [A new];//count 1
[A setB:b];// b count 2
[B setA:a];// a count 2
C* c = [C new];
[c setA:a];// a count 3
[c release];//a count 2
[b release]; b count 1, a count 1
[a release]; a count 0, b count 0
結論: retain/release 請成對
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.227.128.237
→
05/03 14:48, , 1F
05/03 14:48, 1F
→
05/03 17:09, , 2F
05/03 17:09, 2F
→
05/03 17:10, , 3F
05/03 17:10, 3F
→
05/03 17:11, , 4F
05/03 17:11, 4F
→
05/03 17:12, , 5F
05/03 17:12, 5F
討論串 (同標題文章)