2010-02-04 5 views
0

NSDate 인스턴스 변수를 한 달 씩 증가시킬 메소드를 구현하려고합니다. 나는 이것으로 메모리 관리 문제가있다. (나는 MallocScribble 및 NSZombieEnabled를 사용하고 메시지를 받고 있어요 : - [CFDate 복사] : 할당이 해제 된 인스턴스 0x3d9dfa0에 보낸 메시지) : 날짜를 증가하는 가장 좋은 방법은 무엇NSDate를 증가시키는 방법

내 질문에 온다?

NSDate *displayedMonthYear; 
.... 

-(IBAction) nextMonth:(id)sender { 

    NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
    [dateComponents setMonth:1]; 
    NSDate *prevDate = [displayedMonthYear copy]; 
    [displayedMonthYear release]; 
    displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:prevDate options:0]; 
    [prevDate release]; 
    [dateComponents release]; 
    [calendar release]; 
} 

원래 나는 prevDate의 사본과 함께 비트를하고 있지했지만, 같은 일을했다 :

displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:displayedMonthYear options:0]; 

그러나, 나는 그 방법은 메모리를 누출 할 우려했습니다 여기 내 코드입니다. 그래서 이것은 날짜 문제보다 메모리 관리 문제가 더 많을 것이라고 생각합니다. 그러나 어떤 도움도 좋을 것입니다. -

+0

이 프로젝트의 코드 : HTTP : //github.com/klazuka/Kal 내가 코코아 등 날짜, 달, 관리하기위한 본 것 중에 최고입니다. –

+0

감사합니다. – BridgetG

답변

0

displayedMonthYear에 할당 된 값이 필요합니다.

copy도 사용할 필요가 없습니다. 그것을 할 수있는 방법이 많이 있습니다. 여기에 또 다른 예입니다 :

NSDate* newDate = [calendar dateByAddingComponents:dateComponents displayedMonthYear options:0]; 
[displayedMonthYear release]; 
displayedMonthYear = [newDate retain]; 
+0

감사합니다. 도움에 감사드립니다. – BridgetG

관련 문제