迴圈retain導致記憶體洩露

2021-07-05 05:10:39 字數 1104 閱讀 5161

dog.h

#import 

@class

person;

@inte***ce

dog : nsobject

@property (nonatomic,retain) person *owner;

@end

person.h

#import 

@class

dog;

@inte***ce

person : nsobject

@property (nonatomic,retain) dog *dog;

@end

dog的dealloc函式中有[person dealloc],person的dealloc函式中有[dog dealloc]

main.m

int main(int argc, const

char * argv)

return

0;}

p.dog = d;

d.owner = p;

這兩句執行完畢後是這樣子的:

[ p release] ;執行完畢後是這樣子的:

[d release]; 執行結束是這樣子,於是造成記憶體洩露

讓一段使用@property的assign引數

例如在dog.h中

@property (nonatomic,assign) person *owner;
由於不是retain,在dog的dealloc函式中不需要在寫[_owner dealloc];

就可以解決問題。具體原因可以同上面的分析得出結論。

迴圈引用導致記憶體洩露 dealloc無法呼叫

在專案中,無意中把newswritecommentviewdelgate的屬性設定為了retain,導致迴圈引用,其他使用這個delegate的類引用計數出問題,然後在正常的使用alloc建立這個類物件和release釋放物件後無法呼叫類的dealloc函式,記憶體洩露是必然的。然後,在push進n...

Flex Fade效果導致記憶體洩露

因為這個問題,害我找了一晚上,乙個物件始終無法被釋放,崩潰了 最後在幾千行 裡逐一排查,終於找到了這個罪魁禍首 具體原因 通常我們給物件設定效果事件時如下 this.setstyle hideeffect o fadeout this.setstyle showeffect o fadein 當執行...

使用self 導致的記憶體洩露

請看第一段 在myobject.m中 self.aobj nsobject alloc init void dealloc 你能否看出這裡的記憶體洩露?接下來看第二段 aobj nsobject alloc init void dealloc 你能否看出這裡是否也有記憶體洩露呢?如果你都能夠很確定的...