Itération sur NSMutableArray objets. Les Meilleures Pratiques
dans mon application j'ai plusieurs boucles dans lesquelles l'accès aux membres d'un NSMutableArray à les utiliser. Voici un exemple:
for (a=0;a<[items count];a++)
{
iItem *item = [[items objectAtIndex:a] autorelease];
[page.view addSubview:item];
NSLog(@"Item Added: %d\nItem Frame X:%f Y:%f W:%f H:%f",item.itemId,item.frame.origin.x,item.frame.origin.y,item.frame.size.width,item.frame.size.height);
[item setDelegate:page];
if ([[items objectAtIndex:a] zOrder] == 1)
[page.view sendSubviewToBack:item];
else
[page.view bringSubviewToFront:item];
//[item release];
//item = nil;
}
Ma question est si j'ai créé la iItem des objets dans une autre méthode utilisant alloc/init et après la libération de l'ajouter à la MutableArray, est nécessaire, utiliser une version plus iItem créé dans la boucle, après avoir été utilisé?
Grâce.
OriginalL'auteur NemeSys | 2012-01-26
Vous devez vous connecter pour publier un commentaire.
Comme omz déjà souligné, vous avez plus de libération de vos articles. Si vous n'avez que des éléments de type
iItem
dans votre tableau, vous pouvez utiliser rapide énumération:OriginalL'auteur tilo
Pas. L'élément que vous auriez accès via
objectAtIndex:
n'est pas créé, vous obtenez juste une référence à ce qui est, par convention, déjà autoreleased. Donc, si vous ajoutez unautorelease
appel de votre part, vous êtes en fait plus de-de le libérer, ce qui peut entraîner une balançant pointeur qui pourrait causer votre application crash.OriginalL'auteur omz