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