2010-07-27 7 views
1

Je souhaite mieux comprendre la différence entre dealloc et la fonction release .... exemple ... Je ma classe dérivée de NSObject calle MyClass dans mon code pour utiliser cette classe, je crée une instance de MyClass ..iphone version dealloc

// initialization 
MyClass* test = [[MyClass alloc] init]; 

//do some stuff.... 

// release?? 
[ test release]; 

est-ce exact? et le dealloc ??? doit être utilisé dans la séquence ou l'un écraser l'autre?

+0

duplication possible de [Différence entre la version et dealloc dans l'objectif-c] (http://stackoverflow.com/questions/559295/difference-between-release-and-dealloc-in-objective-c – Vladimir

Répondre

2

Le dealloc est automatiquement appelé lorsque retainCount est == 0. Chaque fois que vous appelez [test release], le retainCount est diminué d'une unité.

Dans votre exemple, tout va bien, puisque vous avez le test alloc (retenez le compte +1), puis relâchez (maintenez le compte 0). Dealloc sera automatiquement appelé

+0

la libération est faite sur l'instance d'une classe et non sur une classe :) – willcodejavaforfood

+0

dans votre exemple, vous avez deux instances, chacune avec un nombre de retenue +1 – Noya

+0

ok, mais pouvez-vous m'écrire un exemple où vous avez retainCount = 2 et quel est l'usage de cette chose ?? merci beaucoup noya! p.s. ho visto che sei italiano !!!! :) – ghiboz

1

Tant que c'est la fin de la vie de test, vous avez raison. Le dealloc de test se fera automatiquement en fonction de votre instruction [ test release].

Questions connexes