MISE À JOURPourquoi ce code Objectif C fuit-il la mémoire?
Je cette méthode en Objective C:
-(NSDate*)roundTo15:(NSDate*)dateToRound {
int intervalInMinute = 15;
// Create a NSDate object and a NSDateComponets object for us to use
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:dateToRound];
// Extract the number of minutes and find the remainder when divided the time interval
NSInteger remainder = [dateComponents minute] % intervalInMinute;
// gives us the remainder when divided by interval (for example, 25 would be 0, but 23 would give a remainder of 3
// Round to the nearest 5 minutes (ignoring seconds)
if (remainder >= intervalInMinute/2) {
dateToRound = [dateToRound dateByAddingTimeInterval:((intervalInMinute - remainder) * 60)]; // Add the difference
} else if (remainder > 0 && remainder < intervalInMinute/2) {
dateToRound = [dateToRound dateByAddingTimeInterval:(remainder * -60)]; // Subtract the difference
}
return dateToRound;
}
Voici comment j'appelle la méthode:
item.timestamp =
[self roundTo15:[[NSDate date] dateByAddingTimeInterval:60 * 60]];
Instruments dit que je suis qui fuit un objet NSDate lorsque les éléments suivants la ligne est exécutée:
dateToRound = [dateToRound dateByAddingTimeInterval:(remainder * -60)];
Donc c'est mon objet objet que je dois mettre à jour avec un nouveau NSDate corrigé. J'ai essayé en faisant un roundedDate et en le retournant comme ceci: return [roundedDate autorelease];
, mais alors j'ai eu une erreur d'accès mauvaise.
@ThomasW quel est le point dans l'édition d'une question de 3 ans qui ne sont plus de toute façon pertinente? Tout ce que vous faites est d'élever les morts en cognant la question. – Fogmeister
Eh bien ... que la tentative de "Rollback" n'a pas fonctionné comme je m'y attendais. :( – Fogmeister
@Fogmeister Quelqu'un d'autre l'a édité avant moi, c'est comme ça qu'il a attiré mon attention – ThomasW