Идиоматический принцип проектирования Какао состоит в том, что если вы не создаете / сохраняете объекты с использованием -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
Надеюсь, это поможет.