2012-01-21 11 views
0

私はいくつかのカスタムオブジェクトを作成しています。私は3つのクラスの歌、プレイリスト、音楽を持っています。メインプログラムから新しいソングをインスタンス化するのは簡単ですが、新しいソングを作成してメインプログラムに戻すには、ミュージッククラスでメソッドを作成する必要があると考えていました。ここで私は混乱するところです。オブジェクトが作成された後、どこでいつリリースしますか?それを作成してMusicメソッドで保持してからメインプログラムでリリースしますか?返されたソングを受け取るためにメインプログラムに別のソングオブジェクトを作成する必要があると私は思っています。これについていくつか考えていただければ幸いです。Objective Cの新機能、カスタムオブジェクトの作成

おかげで、

gfgruvin

+1

ARCについて知っていますか? http://clang.llvm.org/docs/AutomaticReferenceCounting.html – alex

+0

ARCを使用すると、その性質の厄介な詳細を忘れることができます:) – dasblinkenlight

+1

iOS 4.x、3.xについてご存知ですか?あなたは、メモリ管理を理解していない人や、いたずらを書く人について知っていますか?彼が頼んでダウンウィーティングをやめることをうれしく思います。 –

答えて

1

慣用ココア設計原理は、ユーザーが作成していない場合は/あなたは責任を負いませんね、-alloc、-retain、-copyまたは-mutableCopyを使用してオブジェクトを保持していることですそれらを解放するため。したがって、あなたはそれらを解放する必要はありません。これらの場合のメモリ管理は、次のように行われます。作成者クラスがオブジェクトを作成したため、オブジェクトを解放する必要があります。クリエイタークラスは、オブジェクトをいつリリースするかを知らないので、単にそれを自動リリースします。あなたのケースでは、これは(はずあなたのソングクラスはTitleプロパティのいくつかの種類を持っている)、このように行われます。

@implementation Music 

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

@end 

・ホープ、このことができます。

+0

OPのオリジナルの質問の範囲を超えていますが、それは非常に厳格なデザインのようです。 'Song'のサブクラスを作成して代わりに返すのであればどうなりますか? –

+0

@JonathanSterling "Music"クラスの中の新しい "Song"の例が必要なので、これはうまくいきません。私はDI /抽象ファクトリについてもっと考えていました。 –

+0

Wtf?クラスが音楽の場合、曲を返す場合は、自己を使うことはできません! (私はそれがソングクラスかどうかは分かりますが、OPは明示的に彼が音楽クラスを使ってソングを望んでいると述べたので、私は彼の質問に応じて書きました...) –

関連する問題