这可能是一个更多关于对象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