Vous pouvez appeler le autorelease
dans votre méthode GetEntityID
sur la classe pour libérer automatiquement l'instance si elle n'est pas conservée. Étant donné que l'instanciation de la classe est effectuée dans la méthode de votre classe de connectivité DB, l'objet renvoyé à l'instance ne la «possède» pas, c'est-à-dire votre classe de connectivité DB. A ce jour, selon convention, vous devez mémoire gérer l'instance:
Vous prenez possession d'un objet si vous créez à l'aide d'une méthode dont le nom commence par « alloc » ou « nouveau » ou contient « copie "(Par exemple, alloc, newObject ou mutableCopy) ou si vous lui envoyez un message" retain ". Vous êtes responsable de renoncer à la propriété des objets que vous possédez en utilisant la libération ou autorelease. Toute autre fois que vous recevez un objet, vous ne devez pas le libérer.
Si l'objet l'envoi de la méthode GetEntityID
veut garder l'objet autour, par exemple si elle doit être utilisée comme une variable d'instance, peut alors être retenu l'objet retourné, l'empêchant d'être désallouée à la fin de l'événement actuel. Si elle n'est utilisée que localement, et n'a pas besoin d'être conservée après l'événement en cours, alors la classe n'a rien à faire; il sera libéré par le pool autorelease à la fin de l'événement en cours.
This article explique plus sur les pools autorelease.
Bonne question, et les réponses ci-dessous sont géniales. Juste une note de style: les noms de méthodes commencent généralement par une lettre minuscule, donc getEntityByID: serait préférable. Cela fonctionne cependant vous l'appelez, mais les conventions de codage peuvent aider à rendre le code plus maintenable. :-) –