2011-05-02 75 views
1

我有一個應用程序正在運行一個簡單的計時器。以下代碼每秒從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]; 

} 

任何幫助將不勝感激!

回答

2

呼叫[calendar release],不dealloc ...框架調用dealloc你,當calendar不再有任何保留它。

+0

哦,你是英雄。非常感謝 - 它的工作完美,我知道我一直在刪除錯誤的對象!謝謝。 – Rich 2011-05-02 22:24:32