在[obj release]之后,引用计数仍然是1,它应该被解除分配
当我创建一个对象并检查其保留计数时,我按预期得到1。当我释放对象然后再次检查保留计数时,它仍然是1.不应该取消分配对象,并且保留计数为0?
NSMutableString *str=[[NSMutableString alloc] initWithString:@"hello"];
NSLog(@"reference count is %i",[str retainCount]);
[str release];
NSLog(@"reference count is %i",[str retainCount]);
如果我先将str
设置为nil
,我确实会看到保留计数为0。这是为什么?
没有找到相关结果
已邀请:
2 个回复
孝铜差
,它在大多数情况下都没有达到预期效果。 你的第二个
正在访问作为对象的解除分配的内存。在这种特殊情况下,释放的内存仍然包含足够的NSString中的旧数据,该数据刚刚被释放,以便在调用
方法时程序不会崩溃。如果你用
运行它,你会得到一条关于向解除分配的实例发送消息的错误消息。 调用nil时返回0的原因是返回整数的方法在nil对象上调用时总是返回0。
庞协腿宛炯
。而且不在乎这个。引擎盖下可能会发生很多事情。您只需要确保已经释放了所有拥有的东西。如果您要确保没有泄漏任何内存,请使用Instrument,而不是在NSLog中使用retainCount。