Вы можете вызвать autorelease
в своем методе GetEntityID
для класса, чтобы автоматически высвободить экземпляр, если он не сохраняется иным образом.
Поскольку создание экземпляра класса выполняется в методе класса подключения к БД, объект, который возвращается экземпляру, не «владеет» им - ваш класс подключения к БД. Начиная с этого, в соответствии с соглашением , вам необходимо управлять экземпляром в памяти:
Вы вступаете во владение объектом, если создаете его с помощью метода, имя которого начинается с «alloc» или «new» или содержит «copy» (например, alloc, newObject или mutableCopy), или если вы отправляете ему сохранить сообщение. Вы несете ответственность за отказ от владения принадлежащими вам объектами с помощью выпуска или автоматического выпуска. В любое другое время, когда вы получаете объект, вы не должны отпускать его.
Если объект, отправляющий метод GetEntityID
, хочет сохранить объект, например, если он будет использоваться в качестве переменной экземпляра, то возвращенный объект можно сохранить, предотвращая его освобождение в конце Текущее событие. Если он используется только локально, и его не нужно хранить после текущего события, тогда класс не должен ничего делать; он будет выпущен пулом автоматического выпуска в конце текущего события.
Эта статья объясняет больше об пулах автоматического выпуска.