Objective C NSMutableString *属性保留计数奇怪

时间:2010-07-05 14:59:35

标签: iphone objective-c nsmutablestring

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

我的保留计数保持为1。

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

[text release];

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

我错过了什么吗?

感谢。

3 个答案:

答案 0 :(得分:6)

无法保证retainCount在对象的生命周期中的任何时刻都会返回正确的值。如果您使用NSMutableString创建了[[NSMutableString alloc] init]并且您正在调用一次发布,那么您正在做正确的事情,不应该担心它。

答案 1 :(得分: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

答案 2 :(得分:1)

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