Question sur la méthode dealloc

Snoopy_87Snoopy_87 Membre
Bonjour,

Comme le titre du sujet l'indique, je me pose une question au sujet de la méthode dealloc..

Si je écris ce qui se trouve ci-dessous :

<br /><br />-(void) dealloc<br />{<br />&nbsp; &nbsp; &nbsp; [object_1 release];<br />}<br /><br />


et que dans le code, j'utilise l'object "object_1" et que pour une raison X je le release ailleurs que dans la méthode dealloc. J'aimerai savoir ce qui se passe lorsque la méthode dealloc est appelé ? Cela créera-t-il une erreur ?

Merci d'avance pour vos réponse 

Snoopy


Réponses

  • CeetixCeetix Membre
    11:56 modifié #2
    Pourquoi tu ne testes pas toi-même pour voir ce qui se passe  ? Il faut être curieux :)
  • Snoopy_87Snoopy_87 Membre
    11:56 modifié #3
    Ben j'ai essayé... mais il me fait pas d'erreur, et je comprend pas pourquoi. C'est bizarre, qu'il arrive a deallouer un objet qui a un pointeur sur NULL. 
  • AliGatorAliGator Membre, Modérateur
    11:56 modifié #4
    Si tu fais plus de "release"/"autorelease" que de "alloc"/"retain"/"copy", tu auras effectivement une erreur.
    Mais si tu as mis ta variable à  nil en plus de faire le release, et que donc une fois dans le dealloc object_1 est alors nil, ça ne fera pas d'erreur.
    Tout simplement parce qu'en Objective-C, il est autorisé d'envoyer un message à  nil (et cela ne provoque aucun effet).

    Par contre pour être tout à  fait complet, il est à  noter que ta méthode dealloc est incorrecte puisqu'il manque l'appel à  "super", chose qu'il doit certainement te signaler par un warning d'ailleurs (en tout cas si tu fais un "Build & Analyze" pour que justement il t'analyse le code surtout au niveau des mauvais usages de la mémoire ou des variables inutilisées etc (même s'ils ne les remonte pas tous, tout ceux qu'il remonte sont à  corriger en tout cas)
  • CeetixCeetix Membre
    11:56 modifié #5
    Si tu as essayé et que ça ne cause pas d'erreur c'est que ton dealloc n'est pas appelé. :)
  • CéroceCéroce Membre, Modérateur
    11:56 modifié #6
    dans 1287090576:

    Ben j'ai essayé... mais il me fait pas d'erreur, et je comprend pas pourquoi. C'est bizarre, qu'il arrive a deallouer un objet qui a un pointeur sur NULL.


    Envoyer un message à  nil est tout à  fait légal en ObjC: ça n'a pas d'action.
Connectez-vous ou Inscrivez-vous pour répondre.