Disons que j'ai ce code:Est-ce que les méthodes qui retournent des pointeurs sur différents objets allouent et initent automatiquement cet autre objet?
NSString *inspDate = @"20120515";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSDate *inspectionDate;
inspectionDate = [dateFormatter dateFromString:inspDate];
Quand je vérifie pour voir que cela fonctionne (NSDate
contient les données formatées correctement), il fait ... mais pourquoi?
Ici je passe par les étapes:
mémoire pour
NSDateFormatter
est alloué et s'instancié dans le tas.dateFormatter
pointe vers cet endroit, il a obtenu:NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
maintenant
dateFormatter
qui est dit comment interpréterNSString
« s comme une date, ok:[dateFormatter setDateFormat:@"yyyyMMdd"];
est ici la partie que je suis floue le pointeur
inspectionDate
est défini sur zéro. Il est ne pointe pas vers quoi que ce soit:NSDate *inspectionDate;
Comment est
dateFormatter
renvoyant un pointeur sur unNSDate
quand il n'y avait pasalloc
ouinit
appelé àinspectionDate
? L'implémentation dedateFromString
fait-elle lesalloc
etinit
dans sa mise en œuvre?inspectionDate = [dateFormatter dateFromString:inspDate];
me aider à visualiser ce serait une aide précieuse. Je vous remercie!
... et autorelease la date retournée. – jrturton
@jrturton réponse mise à jour pour rendre cela explicite. –
Le 'dateFromString' prend soin d'allouer et d'initialiser l'objet' NSDate' pour moi, je pointe juste sa création vivant dans le tas en utilisant mon pointeur 'inspectionDate'. Merci Monsieur! – kevmalek