Новое в Objective C, Создание пользовательских объектов - PullRequest
0 голосов
/ 21 января 2012

Я создаю несколько пользовательских объектов для практики. У меня есть три класса песни, плейлиста и музыки. Создать новую песню из моей основной программы легко, но я подумал, что мне следует создать метод в классе Music, чтобы создать новую песню и вернуть ее в основную программу. Вот где я запутался. После того, как объект создан, где и когда я его отпускаю. Я создаю это и сохраняю это в методе Музыка и затем выпускаю это в основной программе? Я думаю, что мне нужно создать еще один объект Song в основной программе, чтобы получить возвращенную композицию. Буду очень признателен за некоторые мысли по этому поводу?

Спасибо

gfgruvin

1 Ответ

1 голос
/ 21 января 2012

Идиоматический принцип проектирования Какао состоит в том, что если вы не создаете / сохраняете объекты с использованием -alloc, -retain, -copy или -mutableCopy, то вы не несете ответственности за их освобождение; таким образом, вы не должны (и не должны) выпускать их. Управление памятью в этих случаях осуществляется следующим образом: класс создателя создал объект, поэтому он отвечает за его освобождение. Так как класс создателя не знает, когда освободить объект, он просто -авто освободит его. В вашем случае это будет сделано так (предполагается, что у вашего класса Song есть какое-то свойство Title):

@implementation Music

+ (Song *) songWithTitle:(NSString *)title
{
    Song *s = [[[Song alloc] init] autorelease]; // autorelease make our conscience happy
    s.title = title;
    return s;
}

@end

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...