【发布时间】:2011-11-13 08:42:20
【问题描述】:
这里有一些丑陋的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSDate *date = [NSDate date];
NSString *textWithYear = [NSString stringWithFormat:@"text and year %@", [dateFormatter stringFromDate:date] ];
[dateFormatter release];
NSLog(@"%i", [dateFormatter retainCount]); // returns 1 !
如你所见,retains 计数器返回 1,我想这意味着对象没有被释放。 如果我将该字符串更改为
[dateFormatter release], dateFromatter = nil;
retains 计数器返回 0,这可能是因为它无法计算 nil 的保留 :)
关于保留计数器有什么我不明白的地方,或者这个对象真的没有释放吗?当我第二次向它发送release 时(努力使保留计数为零),它会按预期粉碎:)
还有一个问题:如果 dateFormatter 真的发布了,为什么我调用 [dateFormatter retainCount] 时它不会崩溃?
【问题讨论】:
标签: objective-c memory-management null retaincount