2010-11-13 5 views
0

Dans mon code que je fais,Making nulle de classe et de libérer la référence

ClassA *reference = [[ClassA alloc] init]; 
[reference invokeMethod]; 
reference = nil; 
[reference release]; 

Sans la référence = nil Je sais qu'il libère la mémoire cos sa façon normale de le faire. Mais dans cette situation, si nous rendons la référence nulle et libérons la mémoire plus tard, supprime-t-elle la mémoire antérieure consommée pour la création de l'objet?

Merci

Répondre

2

n ° release = nil fait que la mémoire elle à l'origine des points à unaccessible; cela ne supprimera pas la mémoire consommée. (Par la suite, cela provoque l'instruction [reference release]; par la suite une opération non-op.)

+0

Merci Kenny pour votre réponse – Dilshan

1

Comme l'a dit kenny, Release = nil ne fait que pointer l'objet de référence à zéro. maintenant vous avez perdu le contrôle de l'objet alloué ClassA, et ne pouvez pas le libérer pour qu'une fuite de mémoire se produise. Et [release release] essaye de libérer la mémoire d'un objet nul, ce qui provoquerait un crash aussi.

+0

Merci pour votre réponse – Dilshan

Questions connexes