2010-07-31 4 views
0

premier:pourquoi ces méthodes fuient-elles les objets NSDate?

+ (NSDate*)convertToUTC:(NSDate*)sourceDate 
{ 
    NSTimeZone* currentTimeZone = [NSTimeZone localTimeZone]; 
    NSTimeZone* utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; 

    NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:sourceDate]; 
    NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:sourceDate]; 
    NSTimeInterval gmtInterval = gmtOffset - currentGMTOffset; 

    return [NSDate dateWithTimeInterval:gmtInterval sinceDate:sourceDate]; 
} 

Oui, je sais que ce prochain est étrange, mais mon serveur me donne un format de date whack

+(NSDate *)getDateFromString:(NSString *)dtStr 
{ 
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[inputFormatter setLocale:locale]; 
[locale release]; 
[inputFormatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"]; 
NSDate *formatterDate = [[inputFormatter dateFromString:dtStr] copy]; 
[inputFormatter release]; 
return formatterDate; 
} 

Répondre

3

Le premier n'a pas, mais le second ne, parce que vous avez créé une copie et ne l'autorelease pas. Si vous ne le relâchez pas plus tard, il y aura une fuite.

Je ne vois pas pourquoi vous copiez même la date dans la seconde méthode. Juste couper ça et ça va réparer la fuite.

Vous devriez vraiment lire (ou relire) the Memory Management Programming Guide for Cocoa, car il semble que vous devez affiner votre compréhension des règles de gestion de la mémoire.

Questions connexes