J'utilise des instruments pour essayer de déterminer s'il y a des endroits dans mon application que je pourrais être plus efficace avec l'utilisation de la mémoire. J'ai pris le temps de me familiariser avec les instruments, mais je suis généralement un débutant avec des problèmes de gestion de la mémoire de chasse provenant d'un arrière-plan Java. Je semblent utiliser à propos 1.82MB par des appels à cette méthode:Débogage de la mémoire de l'iPhone
+ (NSString *)stringFromDateWithFormat:(NSDate *)date withFormat:(NSString *)format
{
NSDateFormatter *dateFormatter;
NSString *result;
if (nil == date || nil == format)
return nil;
result = nil;
if (nil != (dateFormatter = [[NSDateFormatter allocWithZone:[self zone]] init])) {
[dateFormatter setDateFormat:format];
if (nil != (result = [dateFormatter stringFromDate:date])) {
[dateFormatter release];
return result;
}
[dateFormatter release];
}
return nil;
}
Comme je publie la formatter ce jour, je me demande si le résultat NSString est mon problème. Il me semble que l'appel de la librairie stringFromDate retournerait un objet autoreleased donc je ne peux rien faire pour le 'manuellement' le gérer. Un peu incertain de la façon d'optimiser cette méthode.
Pouvez-vous dire pourquoi vous n'utilisez pas allocWithZone? – Rob
Pour une utilisation normale, ce n'est pas nécessaire car vos objets seront toujours alloués sur la même zone par défaut. Voir cet article: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/MemoryMgmt/Concepts/Zones.html –