Objective c 新增目标C,创建自定义对象

Objective c 新增目标C,创建自定义对象,objective-c,Objective C,我正在创建一些自定义对象来练习。我有三门课:歌曲、播放列表和音乐。从我的主程序实例化一首新歌很容易,但我想我应该在Music类中创建一个方法来创建一首新歌并将其返回到主程序。这就是我感到困惑的地方。创建对象后,何时何地释放它。我是否创建它并在音乐方法中保留它,然后在主程序中释放它?我想我需要在主程序中创建另一个Song对象来接收返回的歌曲。我将非常感谢您对这方面的一些想法 谢谢 gfgruvin惯用的Cocoa设计原则是,如果您不使用-alloc、-retain、-copy或-mutableCo

我正在创建一些自定义对象来练习。我有三门课:歌曲、播放列表和音乐。从我的主程序实例化一首新歌很容易,但我想我应该在Music类中创建一个方法来创建一首新歌并将其返回到主程序。这就是我感到困惑的地方。创建对象后,何时何地释放它。我是否创建它并在音乐方法中保留它,然后在主程序中释放它?我想我需要在主程序中创建另一个Song对象来接收返回的歌曲。我将非常感谢您对这方面的一些想法

谢谢


gfgruvin

惯用的Cocoa设计原则是,如果您不使用-alloc、-retain、-copy或-mutableCopy创建/保留对象,那么您不负责释放它们;因此,您不必(也不应该)释放它们。在这些情况下,内存管理是这样做的:creator类创建了对象,所以它负责释放它。由于creator类不知道何时释放该对象,因此它只会自动释放它。在您的情况下,将这样做(假设您的Song类具有某种Title属性):


希望这有帮助。

你知道ARC吗?使用ARC可以帮助你忘记那些令人讨厌的细节:)你知道iOS 4.x、3.x吗?你知道有人不懂内存管理和写废话吗?很高兴他问了,别再唠叨了。这超出了OP最初问题的范围,但这看起来像是一个非常僵硬的设计。如果我创建了
Song
的子类并希望返回该子类,会发生什么情况?@JonathanSterling这不会起作用,因为示例want是
Music
类中的新
Song
。我想的更多的是DI/抽象工厂。Wtf?如果课程是音乐,并且你想返回一首歌,你不可能使用self!(很明显,我知道如果是歌曲课,我应该使用self。但由于OP明确表示他想要一首使用音乐课的歌曲,我是根据他的问题写的…@H2CO3我不确定是否需要“wtf”?乔纳森的回答显然误读了这个问题,但我坚持我最初的评论。你错了,但他不应该因为忽略了答案而亵渎答案。。。
@implementation Music

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

@end