【问题标题】:return custom class allocation memory leaks返回自定义类分配内存泄漏
【发布时间】:2011-07-05 18:38:32
【问题描述】:

我正在使用 kal 日历应用程序。我在以下代码上出现内存泄漏。谁能告诉我我做错了什么。

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];


               }


           }

...

日历详情.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;

}

........

感谢和问候, 萨蒂什

【问题讨论】:

    标签: iphone memory sdk calendar memory-leaks


    【解决方案1】:

    如果您发送任何控制台输出并告诉我们您如何准确地知道您有内存泄漏,将会有所帮助。

    看起来与其说是内存泄漏,不如说是过度释放:你正在调用[d release],但你不应该以这种方式释放你的NSDate——你以这样的方式得到它自动发布。阅读 Cocoa 内存管理指南。

    顺便说一句,使用更好的变量名会使事情变得更容易。例如。 date 而不是 d

    【讨论】:

    • 删除“[d release]”有什么不同吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 2018-07-15
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多