#iphone #memory #memory-leaks #instruments
#iPhone #память #утечки памяти #инструменты
Вопрос:
Я использовал инструмент, чтобы проверить, были ли у меня какие-либо утечки в моем скрипте, и он пришел с парой, особенно в моем NSDateFormatter. Он говорит, что у меня это было:
Leaked Object # Address Size Responsible Library Responsible Frame
NSDateFormatter 70 < multiple > 1.09 KB DAF [XMLParser dateFromString:]
Это мой метод, на который он указывает, и я не могу найти никакой утечки:
(NSDate *)dateFromString:(NSString *)dateString
{
NSDateFormatter *nsDateFormatter = [[NSDateFormatter alloc] init];
[nsDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];
NSDate *date = [nsDateFormatter dateFromString:dateString];
return date;
[nsDateFormatter release];
}
Кто-нибудь может мне помочь с этим? Я понятия не имею, где искать, это мой первый опыт работы с инструментами.
Комментарии:
1. Я удивлен, что компилятор не предупредил о «недоступном операторе» или подобном.
Ответ №1:
Вы возвращаете дату перед выпуском средства форматирования.
(NSDate *)dateFromString:(NSString *)dateString
{
NSDateFormatter *nsDateFormatter = [[NSDateFormatter alloc] init];
[nsDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];
NSDate *date = [nsDateFormatter dateFromString:dateString];
[nsDateFormatter release]; //Release here
return date;
//Code after a return does not get executed!!!
}
Ответ №2:
Сделайте ваше return
утверждение последним утверждением. Как вы это написали, [nsDateFormatter release]
никогда не вызывается, потому что функция возвращается до того, как сможет выполнить эту строку.