Как преобразовать 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
, все автореализованные.