1

これはばかげた質問かもしれませんが、複数のViewControllerに対して同じプロパティを宣言することにうんざりしていることに気づきました。以下のような単純なことを行うためのより良い設計はありますか?

これを考慮してください:私は私のiphoneプロジェクト全体で使用されるSoundManagerクラスを持っています。このクラスは、ユーザーがボタンを押すと、単にオーディオを再生します(クリック音)。

今、私はこれをやっています:

ViewController A:.h

SoundManager *mgr;
@property (nonatomic,retain) SoundManager *mgr;

ViewController A:.m

@synthesize *mgr;

およびviewDidLoadで

if (mgr == nil)
  mgr = [[SoundManager alloc] init];

次に、これをすべてのViewControllerで繰り返します。これは控えめに言っても面倒です。このようなことを行うためのより良い方法があるはずです-または少なくとも私が使用できるコードジェネレータユーティリティ?

誰か提案がありますか?

4

2 に答える 2

1

そのクラスにシングルトンを実装できます。

@interface SoundManager : NSObject
{
    //your ivars
}

//your @properties

//singleton
 + (id)sharedManager;

@end

@implementation SoundManager

//synthesize

static SoundManager *instance = nil;
+ (id)sharedManager
{
    //you may want to add a @synchronized() here
    if (instance == nil)
    {
        instance = [[SoundManager alloc] init];
    }
    return instance;
}
@end

次に、SoundManagerインスタンスが必要な場所で[SoundManagersharedManager]を呼び出します。

于 2012-07-16T10:46:56.013 に答える
0

アプリ全体がSoundManagerの同じインスタンスを使用しているように聞こえますか?おそらく、シングルトンパターンの方が使いやすいでしょう。または、上記の機能を使用してカスタムView Controllerを作成し、他のすべてのViewControllerがこのカスタムViewControllerから継承するようにします。

于 2012-07-16T10:46:23.707 に答える