Здесь я получил некрасивый код:
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 !
Как видите, сохраняет счетчик возвращает 1, что, я полагаю, означает, что объект не освобожден.Если я изменю эту строку на
[dateFormatter release], dateFromatter = nil;
сохраняет счетчик возвращает 0, что предположительно потому, что он не может считать, сохраняет для nil:)
Есть что-то, что я не понимаюсохраняет счетчик, или этот объект действительно не выпущен?Когда я отправляю release
на него во второй раз (стремясь получить ноль, сохраняется количество), он ожидаемо ломается:)
И еще один вопрос: если dateFormatter действительно был выпущен, почему он не падает,я называю [dateFormatter retainCount]?