![](/img/trans.png)
[英]Difference between [NSMutableData data] and [[NSMutableData alloc]init]
[英]When does [[NSMutableData data] retain] is released?
我曾經在許多代碼中看到過[[NSMutableData data]保留]指令,但我不知道何時釋放保留的對象...您能幫我理解嗎?
提前謝謝
斯蒂芬
簡短的答案是:直到您釋放它,它才會被釋放。 您已經增加了保留計數,並且這樣做了,您承擔了以后釋放它的責任。
您可能已經看到的一種情況是人們直接分配給ivars。 當包含對象被銷毀時,或者在重新分配ivar時,發布應在-dealloc
。 但是無論哪種情況,您都必須記住這樣做,否則您的代碼將泄漏。
不是。 漏了
[NSMutableData data]
已經自動釋放-它將在當前自動釋放池的末尾(即在大多數情況下,當前運行循環迭代的末尾)釋放。通過發送-retain
消息,您可以告訴它保留更長的時間,但是沒有相應的-release
消息,它將永遠不會有0
的保留計數,因此永遠不會被釋放。
當您將[NSMutable數據]的保留計數加1時,它才被釋放。 通過使用[[NSMutable data] retain]
您可以在保留數上添加一個,而釋放它,則可以從保留數中減少一個。 因此,在使用完它(在dealloc方法中)后,請釋放它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.