簡體   English   中英

NSMutableString 和 nil 用於 memory 管理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM