реализуют 'freeAnimal (Животное*)' метод, который делает его очевидным, что удаление указателя животных требуется.
альтернативный путь состоит в том, чтобы просто возвратить объект животных непосредственно, никакие указатели, никакие вызовы к новому. Конструктор копии удостоверится, что вызывающая сторона добирается, их собственное животное возражают, что они могут сохранить на "куче" или стеке, или копировать в контейнер, как они требуют.
Так:
class AnimalLister
{
Animal getAnimal() { Animal a; return a; }; // uses fast Return Value Optimisation
};
Animal myownanimal = AnimalLister.getAnimal(); // copy ctors into your Animal object
RVO означает, что возврат объекта вместо указателя на самом деле быстрее (поскольку компилятор не создает новый объект и копирует его в объект вызывающей стороны, но использует объект вызывающей стороны непосредственно).
Вам необходимо поместить код инициализации в метод awakeFromNib
, чтобы он запускался при загрузке из Nib. Файл Nib содержит заархивированную версию содержащихся в нем объектов, поэтому в принципе их не нужно инициализировать повторно.