无法在这段短代码中找到内存泄漏的位置

时间:2011-05-02 22:08:44

标签: iphone ios memory-management

我有一个运行简单计时器的应用程序。以下代码每秒从NSTimer运行几次。作为新的iOS开发人员,我将是第一个承认内存管理是我目前最弱的技能的人。当我运行此代码时,如果我让计时器运行一段时间,我开始得到内存警告,并最终崩溃。如果我禁用NSTimer,它运行好几个小时。我无法看到导致泄漏的原因:

- (void)onTimerTick
{

    NSDate *date = [NSDate date];

    NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date]; 

    NSInteger hour = [dateComponents hour]; 
    NSInteger min = [dateComponents minute]; 
    NSInteger sec = [dateComponents second];      


    double milliSince1970 = [date timeIntervalSince1970];
    int secsSince1970 = [date timeIntervalSince1970];
    int frame = (((milliSince1970 - secsSince1970) * 1000) / frameDuration) + 1;


    timeCode.text =  [NSString stringWithFormat:@"%d:%d:%d:%d", hour, min, sec, frame];
    [calendar dealloc];

}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

致电[calendar release],而非dealloc ...当dealloc不再保留任何内容时,系统会为您调用calendar