Je lis le livre de tutoriel maintenant. Quand je vois un exemple, je deviens confus. Les codes suivants montrent un moyen de chargement paresseux. Est-ce que ce tableau de motivations est publié après désaffectation de l'instance? ou occupera-t-il ce bloc de mémoire jusqu'à ce que l'application se termine.Mémoire sur le chargement paresseux
+ (NSArray *)motivations
{
static NSArray *motivations = nil;
if (!motivations)
{
motivations = [[NSArray alloc] initWithObjects:@"Greed",@"Revenge",@"Bloodlust",@"Nihilism",@"Insanity",nil];
}
return motivations;
}
Modifier 1 Merci Georg pour un bug. Comme il s'agit d'un objet statique, le système stockera le pointeur d'objet jusqu'à ce que l'application soit terminée.
Notez que static ne concerne que le stockage des motivations du pointeur, la durée de vie des tableaux est complètement indépendante de celle-ci. –
Quant à l'image, sous iPhone SDK, l'imageNamed mettra en cache l'image dans le système. Est-il nécessaire de mettre de nouveau en cache une image dans les codes? – AechoLiu
il y a 2 choses: 1/vous ne pouvez pas contrôler imageNamed, ce qu'il cache et ce qu'il ne sera pas. Vous ne voulez certainement pas mettre en cache une image de 3 ou 10 Mo par exemple. 2/Vous ne pouvez pas charger toutes les images avec imageNamed, par exemple, l'image est dans un chemin spécifique dans le système ou l'image téléchargée sur Internet – vodkhang