如果我创建一个 nsmutablestring 然后释放它,保留计数不应该为 0 吗?
我的保留计数保持 1。
NSMutableString *text = [[NSMutableString alloc]init];
[text release];
NSLog(@"retain count %d ", [text retainCount]);
我错过了什么吗?
谢谢。
如果我创建一个 nsmutablestring 然后释放它,保留计数不应该为 0 吗?
我的保留计数保持 1。
NSMutableString *text = [[NSMutableString alloc]init];
[text release];
NSLog(@"retain count %d ", [text retainCount]);
我错过了什么吗?
谢谢。
无法保证retainCount
在对象生命周期的任何时候都会返回正确的值。如果你已经创建了一个NSMutableString
using[[NSMutableString alloc] init]
并且你在它上面调用了一次 release,那么你正在做正确的事情并且不应该担心它。
Apple 在其文档中说,retainCount 对内存管理没有用处,因为框架和自动释放池可以保留一个对象,即使你已经释放了它。http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/retainCount
由于您这样做是出于调试目的,我建议您使用类别将一些测试代码添加到现有类中。任何时候手动保留或释放对象时,都可以调用新方法并使用它来跟踪内存使用情况。