泄漏? dateFromComponents肯定会返回自动释放的对象,不是吗?

时间:2011-07-05 23:06:30

标签: iphone objective-c nscalendar

-(NSDate *)dateFromDate:(NSDate *)inDate withNewTime:(NSDateComponents *)inTimeComponents {

NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *newComponents = [self.sysCalendar components:unitFlags fromDate:inDate];
[newComponents setHour:[inTimeComponents hour]];
[newComponents setMinute:[inTimeComponents minute]];
return [self.sysCalendar dateFromComponents:newComponents];

}

我无法弄清楚为什么会泄漏。这不会返回自动对象吗?它按预期工作,但是当我在乐器上运行时,似乎日期对象正在泄漏,而堆栈表明它是在这里创建的。

sysCalendar是具有以下getter的属性:

-(NSCalendar *)sysCalendar {
if (sysCalendar != nil) {
    return sysCalendar;
}

self.sysCalendar = [NSCalendar currentCalendar];
return sysCalendar;

}

2 个答案:

答案 0 :(得分:1)

当仪器显示泄漏发生的位置时,它实际上显示了泄漏对象的创建位置。

在这种情况下,似乎此处创建的对象未在其他地方正确发布。

答案 1 :(得分:1)

要明确的是:你说的是NSDate对象正在泄漏,而不是NSDateComponents对象,对吗?

因此Leaks通常无法告诉您在此返回语句中您可能忘记释放此处创建的日期。它只是告诉你这是它的创建地点。

因此,在从此方法中获取后,请查看您对此新NSDate的操作。

相关问题