У меня небольшой метод, возвращающий первый день недели с указанной датой:
- (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;
}
Как видите, я уже пытаюсь автоматически выпустить каждую переменную, которая здесь используется (это не то, на что это было похоже, прежде чем я начал отслеживать утечки). Первоначально я хотел явно освободить все переменные перед возвратом, кроме переменной firstDayDate, которая ДОЛЖНА быть автоматически освобождена из-за возврата.
Это утечки объектов, найденные с помощью Performance Tool:
- icu :: GregorianCalendar (1,00 КБ)
- icu :: SimpleTimeZone (112 байт)
- __ NSDate (16 байт)
- icu :: NSNumberingSystem (128 байт)
- __ NSCFCalendar (48 байт)
Ошибка ДОЛЖНА быть чем-то совершенно глупым, но я не могу ее найти. Вы можете мне помочь? СПАСИБО !!