2011-02-28 66 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