Je suis tombé sur un vrai disque ici.Référence ne retournant pas nul même si désalloué
Ma classe est auto-créée (+ (void) start;
-method) à laquelle un délégué est envoyé. Je dois envoyer quelques messages au délégué via les sélecteurs de délégués. Pour vérifier si le délégué a été libéré, j'ai essayé if (delegate == nil/NULL)
, mais même s'il est vraiment sorti, il dit toujours que ce n'était pas le cas.
Comment puis-je résoudre ce problème? (Délégué est affecté à un id
)
Voici comment mon application est construite:
AppDelegate
> NavController
>> TableView
>>> Post
>>>> GetData
GetData est la classe auto-créé. Post est le délégué de GetData et est publié par TableView/NavController. Après avoir relâché Post, il est également réglé à zéro.
En d'autres termes, GetData ne libère pas son délégué!
Et si la classe ne libère même pas le délégué, d'autres classes supérieures le font (et le mettent aussi à zéro ...)? – Emil
C'est bien, tant que la référence du délégué de la classe est mise à zéro avant que le délégué lui-même soit libéré. –
Dans votre cas, où 'Post' semble posséder' GetData', ajoutez simplement 'delegate = nil' dans la méthode' -dealloc'. –