Вы передаете дату, используя разделитель /
, но вы указали -
в качестве разделителя для вашего устройства форматирования даты.Что касается вашего вопроса об освобождении строки, вы должны освобождать только те объекты, которыми вы владеете, то есть созданные с помощью new
, alloc
, copy
или mutableCopy
.Смотрите примеры ниже.
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; // needs releasing
[formatter setDateFormat:@"MM-dd-yyyy"];
NSString* str1 = @"06/25/2011"; // does not need releasing
NSString* str2 = [[NSString alloc] initWithString:@"06-25-2011"]; // needs releasing
NSDate* date1 = [formatter dateFromString:str1]; // does not need releasing
NSDate* date2 = [[NSDate alloc] init]; // needs releasing
date2 = [formatter dateFromString:str2];
NSLog(@"date from %@ : %@", str1, date1);
NSLog(@"date from %@ : %@", str2, date2);
// release the objects you own
[formatter release];
[str2 release];
[date2 release];
// prints out
date from 06/25/2011 : (null)
date from 06-25-2011 : 2011-06-25 00:00:00 -0700