[英]NSMutableString and nil for memory management
如果我有一個NSMutableString
例如
NSMutableString *foo = [[NSMutableString alloc] init];
如果我將 object, foo = nil
清零,是否會將保留計數降低 1,從而有效地釋放 memory? 此時我是否需要從堆中重新分配 foo 才能使用它?
請閱讀基本文檔。 將變量foo
設置為 nil 對其之前的內容沒有任何影響。 請記住, foo
只是指向 object 的指針; 要使用它,你必須讓它指向一個有效的 object。 只是為了讓它不再指向 object 不再發布 object。
將 nil 分配給變量不會影響先前存在的值。 保留計數僅通過release
降低。
您應該閱讀 Apple 的Cocoa memory 管理指南。 Cocoa 的引用計數系統並沒有那么難,但它是你必須學習的東西,如果你沒有正確地學習它,你的程序就會有很多讓你發瘋的細微錯誤。
上面大家說的都是真的。 您需要在該代碼段中發布。
但是,重要的是要記住,如果這樣做是正確的,那么分配給屬性會降低保留計數。 那是:
foo = nil; // doesn't lower
bar.foo = nil; // probably does
屬性看起來像普通變量,但實際上不是; 他們智能地處理自己的 memory 管理。 當您與他們合作時,請記住這一點。
這是否會將保留計數降低 1,從而有效地釋放 memory?
不
你應該使用
[foo release]
foo = nil;
不會降低 object 的保留計數。 它只會使foo
指向無處而不是 object。 要減少保留計數,您必須說[foo release];
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.