2011-02-28 68 views
0

我正在使用卡爾日曆應用程序。我得到以下代碼的內存泄漏。任何人都可以請我建議我做錯了什麼。返回自定義類分配內存泄漏

holidayjsondatasource.m

...

for (int i=0; i<[calendar_value count]; i++) { 

NSDate *d = [[fmt dateFromString:[[calendar_value objectAtIndex:i] valueForKey:@"EventDate"]] retain];     

    [holidays addObject:[CalendarDetails 
             holidayNamed:[[calendar_value objectAtIndex:i] valueForKey:@"UnitName"] 
             duration_date:[[calendar_value objectAtIndex:i] valueForKey:@"Checkinout"] 
             status:[[calendar_value objectAtIndex:i] valueForKey:@"EventType"] 
             date:d des:[[calendar_value objectAtIndex:i] valueForKey:@"Description"] 
             bid:[[calendar_value objectAtIndex:i] valueForKey:@"ID"]]]; 
        [d release]; 


       } 


      } 

...

日曆Details.m

......

+ (CalendarDetails*)holidayNamed:(NSString *)aname duration_date:(NSString *)aduration_date status:(NSString *)astatus date:(NSDate *)adate bid: (NSString *)abid note:(NSString *)anote image_status:(NSString *)aimage_status lmd:(NSString *)almd 


{ 


CalendarDetails *cal =[ [[CalendarDetails alloc] initWithName:aname duration:aduration_date  status:astatus date:adate bid:abid note:anote image_status:aimage_status lmd:almd] autorelease]; 

return cal; 

}

........

感謝&問候, Sathish所在

回答

0

,如果你發送的任何控制檯輸出,並告訴我們你知道究竟你有這將有助於內存泄漏。

它看起來不像內存泄漏那樣過度釋放:你打電話給[d release],但是你不應該這樣釋放你的NSDate - 你是這樣解釋它的,它是自動釋放的。閱讀Cocoa內存管理指南。

順便說一句,使用更好的變量名將使事情變得更容易。例如。 date而不是d

+0

刪除「[d版本]」有什麼區別? – occulus 2011-03-01 15:10:45