0

如果我创建一个 nsmutablestring 然后释放它,保留计数不应该为 0 吗?

我的保留计数保持 1。

NSMutableString *text = [[NSMutableString alloc]init];

[text release];

NSLog(@"retain count %d ", [text retainCount]);

我错过了什么吗?

谢谢。

4

3 回答 3

6

无法保证retainCount在对象生命周期的任何时候都会返回正确的值。如果你已经创建了一个NSMutableStringusing[[NSMutableString alloc] init]并且你在它上面调用了一次 release,那么你正在做正确的事情并且不应该担心它。

于 2010-07-05T15:06:49.333 回答
1

Apple 在其文档中说,retainCount 对内存管理没有用处,因为框架和自动释放池可以保留一个对象,即使你已经释放了它。http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/retainCount

于 2010-07-05T15:07:17.417 回答
1

由于您这样做是出于调试目的,我建议您使用类别将一些测试代码添加到现有类中。任何时候手动保留或释放对象时,都可以调用新方法并使用它来跟踪内存使用情况。

于 2010-07-05T15:18:35.930 回答