指定された日付の最初の平日を返す小さなメソッドがあります。
- (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」変数を除いて、戻りの前にすべての変数を明示的に解放したかったのです。
これらは、パフォーマンスツールによって検出されたリークオブジェクトです。
- icu :: GregorianCalendar(1.00 KB)
- icu :: SimpleTimeZone(112バイト)
- __NSDate(16バイト)
- icu :: NSNumberingSystem(128バイト)
- __NSCFCalendar(48バイト)
間違いは完全に愚かなことであるに違いありませんが、私はそれを見つけることができません。手伝って頂けますか?ありがとうございました!!