這可能是一個更多關於對象alloc/retain/release的問題,但我將以NSString爲例。我知道,我可以這樣做:obj-c NSString和alloc/retain/release
NSString* myString = [[NSString alloc] initWithString:@"Test"];
基本上分配和初始化由我mystring變量引用一個字符串,我應該再打[myString的發行]在。但是,如果我這樣做之後,我把它設置爲其他字符串,如:
myString = someOtherString;
做,基本上創建一個內存泄漏,因爲我已經重新分配我的指針到另一個對象,失去了所有參照原我分配了?
如果我只是想親自分配和釋放一個字符串,然後在不同時間更改它的值,我應該使用不同於'='的語法,或者是被重載的正確更改對象內容當我使用=時,最初由myString表示。
沒錯,內存泄漏就像你的狗走路的客戶乾涸,隨着字的傳播,你不斷失去人的狗。 – jasongetsdown 2010-07-22 20:23:01
我認爲你的比喻有點短,因爲如果一個「皮帶」就像一個參考數字,而只有一隻狗「跑掉」,如果它的領子上沒有皮帶,那麼我的例子就是不會拿起皮帶不同的狗,放下我的皮帶,轉而看另一隻狗。聽起來像一個更正確的比喻將是沒有持有牽引繩,以增加連接到燈柱或去除他們等皮帶等,但謝謝澄清。 :) – Joey 2010-07-22 21:44:18
Sheesh,每個人都是批評家...... ACBurk的解釋很棒(程序員!) – pchap10k 2011-07-21 04:50:46