Я имею небольшой метод, возвращающий первый день недели для определенной даты:Утечка памяти с датой Материала (__NSCFCalendar СИС :: GregorianCalendar)
- (NSDate*) getFirstDayOfTheWeekFor:(NSDate*)date {
NSCalendar *gregorianCalender = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *firstDayDate; //This is 100.0% leaking acc. to the Performance Tool Leaks
unsigned yearAndWeek = NSYearCalendarUnit | NSWeekCalendarUnit;
// retrieve the components from the current date
NSDateComponents *compsCurrentDate = [[gregorianCalender components:yearAndWeek fromDate:date] autorelease];
[compsCurrentDate setWeekday:2]; // Monday
[compsCurrentDate setHour:0];
[compsCurrentDate setMinute:0];
[compsCurrentDate setSecond:0];
// make a date from the modfied components
firstDayDate = [[gregorianCalender dateFromComponents:compsCurrentDate] autorelease];
return firstDayDate;
}
Как вы можете видеть, я уже пытался autorelease каждая переменная, которая используется здесь (это не то, что было похоже, прежде чем я начал отслеживать утечки). Первоначально я хотел явно освободить все переменные перед возвратом, за исключением переменной «firstDayDate», которая должна быть автореализована из-за возврата.
Это просочились объекты, найденные Performance Tool:
- СИС :: GregorianCalendar (1,00 KB)
- СИС :: SimpleTimeZone (112 байт)
- __NSDate (16 байт)
- СИС :: NSNumberingSystem (128 байт)
- __NSCFCalendar (48 байт)
Ошибка ДОЛЖНА быть чем-то совершенно глупым, но я не могу ее найти. Вы можете мне помочь? СПАСИБО!!
Да, часть icu выглядит для меня подозрительно .. спасибо за ваш быстрый ответ, надеюсь, кто-то еще может теперь сказать, что это все об этих объектах icu. –
Также просмотрите любой из ваших кодов, который вызывает этот метод. Скорее всего, он сохранит ценность и не выпустят, и моя догадка будет устанавливать его в собственность где-то, которая не была должным образом выпущена. Как сказал Amattn, ваша утечка не существует в этом коде. – Joe