Как преобразовать NSDate в NSString?

преобразование NSDate в NSString создает утечку памяти, может ли кто-нибудь помочь.

Вот мой код: -

NSDate *today = [[NSDate alloc]init];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
dateString = nil;
dateString =[[NSString alloc]initWithString:[df stringFromDate:today]];
[df setDateFormat:@"EEEE       MMM dd yyyy"];
[dateButton setTitle:[df stringFromDate:today] forState:UIControlStateNormal];
[df release];
[today release];

Ответ 1

Поскольку вы ничего не выпускаете, код создает утечку памяти.

NSDate *today = [NSDate date]; //Autorelease
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; //Autorelease

[df setDateFormat:@"yyyy-MM-dd"]; // 2017-09-28
dateString = [[df stringFromDate:today] retain];

[df setDateFormat:@"EEEE       MMM dd yyyy"];  // Thursday Sep 28 2017
[dateButton setTitle:[df stringFromDate:today] forState:UIControlStateNormal];

Для получения дополнительной информации вы можете обратиться к документации Apple.

Ответ 2

Используйте

NSDate *today = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
dateString = [df stringFromDate:today];
[df release]

Ответ 3

Использование вашего кода...

NSDate *today = [[NSDate alloc]init]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd"]; 
dateString = nil; 
dateString = [[NSString alloc]initWithString:[df stringFromDate:today]];

... вам нужно освободить много obj, потому что ничего нет в autorelease.

[today release];  -> alloc
[df release]      -> alloc
[dateString release]; -> alloc

Или измените на:

NSDate *today = [NSDate date];
NSDateFormatter *df = [NSDateFormatter initWithDateFormat:@"yyyy-MM-dd"];
dateString = [df stringFromDate:today];

без релиза/alloc!

Ответ 4

Утечка в DateFormatter, которая не освобождается. Это должно устранить утечку:

[df release];

Ответ 5

Кроме того, попробуйте использовать...

[NSDate date]

вместо...

NSDate* today = [[NSDate alloc] init];

то есть много alloc/initing, которое вы там делаете... вам не нужно выделять/инициализировать NSString.

Ответ 6

Вы Shoud noy alloc или init NSDate object

Попробуйте этот код

NSDate *today = [NSDate date];
NSDateFormatter *dt = [[NSDateFormatter alloc]init];
[dt setDateFormat:@"yyyy-mm-dd"];
NSString *str =[NSString stringWithFormat:@"%@",[dt stringFromDate:today]];
NSLog(@"%@",str);
[dt release];

Счастливое кодирование

Ответ 7

Еще один ответ:

NSDateFormatter  *df = [NSDateFormatter initWithDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [df stringFromDate:[NSDate date]];

используя ARC, все автореализованные.