Iphone 我必须在下面的代码中发布NSDate吗?

Iphone 我必须在下面的代码中发布NSDate吗?,iphone,memory-management,memory-leaks,profiling,nsdate,Iphone,Memory Management,Memory Leaks,Profiling,Nsdate,我必须在下面的代码中发布NSDate吗 (也就是说,或者它只是在一个方法中作为局部变量创建的,我不必担心) 我问这个问题的原因是,当我运行XCode Profiler并单击其中一个内存跳跃的点时,它突出了这段代码(即下面所附代码中的第一行),即我正在查看Profiler中的“泄漏块”表 -(NSDate *) dateBySettingHour:(NSInteger)hour andMinute:(NSInteger)minute { // Get Calendar for Exist

我必须在下面的代码中发布NSDate吗

(也就是说,或者它只是在一个方法中作为局部变量创建的,我不必担心)

我问这个问题的原因是,当我运行XCode Profiler并单击其中一个内存跳跃的点时,它突出了这段代码(即下面所附代码中的第一行),即我正在查看Profiler中的“泄漏块”表

-(NSDate *) dateBySettingHour:(NSInteger)hour andMinute:(NSInteger)minute {

    // Get Calendar for Existing Date
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
    NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: self];

    // Set Hour and Minute
    [components setHour: hour];
    [components setMinute: minute];
    [components setSecond: 00];

    // Create resultant Date
    NSDate *newDate = [gregorian dateFromComponents: components];    // WHERE THE PROFILE HIGHLIGHTS

    // Clean Up
    [gregorian release];    

    return newDate;
}

您不必释放由
-[NSCalendar datefromfomponents::
返回的
NSDate
对象。我的猜测是,该行高亮显示,因为这是您最后一次引用
组件
(希望是
NSDateComponents的一个实例),而您忘记释放该对象


你的代码很好。当我运行静态分析器(而不是分析器)时,它不会报告任何错误。我不确定探查器为什么会报告泄漏——也许Cocoa框架中存在内部泄漏?

不,您不必发布它。它是自动释放的

哦,我已经把完整的方法放在帖子里了,基于这个,你认为它会是组件变量吗?(我不是用alloc或copy制作的)@Greg:我已经更新了我的答案。对不起,我帮不上忙了。好的,谢谢-也许我会发布一个单独的重点问题,关于探查器为什么突出显示这段代码,如果事实上是这样的话,我只是想知道为什么探查器会向我突出显示这行,汤姆,我猜