繁体   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