Étant donné NSArray *tagsArray
et NSMutableDictionary *cache
non vide.variable locale, optimisation et ARC
Ce:
for (Tag *tag in tagsArray) {
NSString *name = tag.name;
[cache setObject:tag forKey:name];
}
ne devrait pas être plus lent que ceci:
for (Tag *tag in tagsArray) {
[cache setObject:tag forKey:tag.name];
}
? Le __strong var 'name' n'utiliserait pas une conservation/libération implicite par ARC? Le compilateur va réellement générer le second à partir du premier?
Je serais surpris s'il y avait une différence dans une version de construction, mais dans une version de débogage, la fonction de conservation/libération serait probablement là. – dasblinkenlight
Oui, ceux-ci compileraient exactement la même chose – trapper
* Devrait * compiler exactement la même chose, probablement. Cela ne me dérangerait pas de parier que quelque chose d'étrange se passe bien que si vous le voyez en train d'être plus lent. – mattjgalloway