繁体   English   中英

NSDateFormatter Memory 泄漏

[英]NSDateFormatter Memory leaks

在 Instrument 的帮助下,我发现下面这段代码泄漏了 memory。 仪器说 NSDateFormatter 在此处泄漏 memory。

- (NSDate*) dateSelected{
if(selectedDay < 1 || selectedPortion != 1) return nil;

TKDateInformation info = [monthDate dateInformationWithTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
info.hour = 0;
info.minute = 0;
info.second = 0;
info.day = selectedDay;
NSDate *d = [NSDate dateFromDateInformation:info timeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];


HolidayAppDelegate *delegatObj = (HolidayAppDelegate *)[UIApplication sharedApplication].delegate;

NSDateFormatter  *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"MMMM-dd-yyyy"];

    // below line getting leak
NSString *message = [[formatter stringFromDate:d] retain];
delegatObj.selecteddate=message;
NSLog(@" selectd %@ ",delegatObj.selecteddate);
[delegatObj getholiday_forcalnder];

return d;

}

谢谢

更改这些行

NSString *message = [[formatter stringFromDate:d] retain];
delegatObj.selecteddate=message;

通过这些线

 NSString *message = [formatter stringFromDate:d];
  [message retain];
delegatObj.selecteddate=message;
[message release];

还选择的日期是类型为保留的属性,因此不要直接调用保留。 它增加了保留计数。

您不需要保留消息。 它将由代表拥有。

试试这个可能对你有帮助

- (NSDate*) dateSelected
{
if(selectedDay < 1 || selectedPortion != 1) return nil;

TKDateInformation info = [monthDate dateInformationWithTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

info.hour = 0;

info.minute = 0;

info.second = 0;

info.day = selectedDay;

NSDate *d = [NSDate dateFromDateInformation:info timeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];


HolidayAppDelegate *delegatObj = (HolidayAppDelegate *)[UIApplication sharedApplication].delegate;

NSDateFormatter  *formatter = [[NSDateFormatter alloc] init];

[formatter setDateFormat:@"MMMM-dd-yyyy"];

NSString *message = [formatter stringFromDate:d];

delegatObj.selecteddate=message;

NSLog(@" selectd %@ ",delegatObj.selecteddate);

[delegatObj getholiday_forcalnder];

[formatter release];

return d;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM