2
-(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;

}

4

2 回答 2

1

当 Instruments 向您显示泄漏发生的位置时,它实际上是在向您显示泄漏对象的创建位置。

在这种情况下,这里创建的对象似乎没有在其他地方正确释放。

于 2011-07-05T23:10:21.113 回答
1

明确一点:您是说 NSDate 对象正在泄漏,而不是 NSDateComponents 对象,对吗?

因此,Leaks 通常无法告诉您您可能忘记在哪里发布此退货声明中创建的日期。它只是告诉你这是它被创建的地方。

因此,从这个方法中取回这个新的 NSDate 后,看看你对它做了什么。

于 2011-07-05T23:11:57.120 回答