2011-07-05 5 views
2

Avec l'aide de l'instrument, j'ai trouvé que la section suivante de la mémoire de fuite de code. Instrument indiquant NSDateFormatter fuite de mémoire ici.NSDateFormatter Fuites de mémoire

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

} 

Merci

+0

mec essayez d'ajouter votre langue aussi dans votre tag ... – Aravindhan

Répondre

4

changement ces lignes

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

par ces lignes

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

également date sélectionnée est la propriété qui est de type retenons donc ne pas appeler directy retain. Cela augmente le nombre de retenues.

0

Essayez ce peut vous aider à

- (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; 
} 
3

Vous n'avez pas besoin retain message. Il appartiendra au délégué.