J'ai une question dans la gestion de la mémoire (objectif C). Il y a deux scénarios idéaux.Gestion de la mémoire dans ObjC/iPhone
scénario ============================= 1 =============== =========================
(void) funcA
{
MyObj *c = [otherObj getMyObject];
[c release];
}
-(MyObj *) getMyObject //(this method is available in other OtherObj.m file)
{
MyObj *temp = [[MyObj alloc] init];
// do smothing here
return temp;
}
================== =========== scénario 2 ================================== ===
(void) funcA
{
MyObj *c = [otherObj getMyObject];
}
-(MyObj *) getMyObject //(this method is available in other OtherObj.m file)
{
MyObj *temp = [[myObj alloc] init];
// do smothing here
return [temp autorelease];
}
myObj contient d'énormes quantités de données.
Dans le premier scénario, je reçois myObj (alloué) à partir d'un autre fichier, donc je dois libérer dans ma propre méthode. (comme dans n'importe quelle bibliothèque de langage C/C++, comme strdup retournera la chaîne de caractères dupliquée qui se réalisera plus tard par le développeur et non par la méthode strdup).
Dans le second scénario, myObj (alloué) provient du fichier otherObj.m, donc le fichier otherObj.m est chargé de libérer la mémoire allouée (Autorelease moyenne). Est ce bien?
Faites-moi savoir quel scénario est le plus efficace et valide selon les directives de la mémoire Apple. S'il vous plaît ne me montrer aucun lien de document.
Merci Manu
Vous pourriez vouloir cliquer sur la petite icône dans la barre d'outils avec tous les nombres binaires, il formate stuff comme code :). –