0

前の質問のとおり、ここでは、データコントローラークラスをシングルトンデザインパターンを使用するように調整して、複数のビューで1回だけ使用できるようにしました。しかし、私にもいくつか質問がありますが、解決策を見つけることができないようです。

まず、2つのビューでクラス/オブジェクトを呼び出して機能させる方法が正確にわかりません。次に、初期化メソッドを+でグローバルにしましたが、各メソッドでこれを行う必要がありますか?

データを共有するために、ビュー間で共有できるようにしたいクラスの初期化は次のとおりです。

static SpeecherDataController *_instance = nil;  // <-- important 

+(SpeecherDataController *)instance
{ 
    // skip everything
    if(_instance) return _instance; 

    // Singleton
    @synchronized([SpeecherDataController class]) 
    {
        if(!_instance)
        {
            _instance = [[self alloc] init];

            //  NSLog(@"Creating global instance!"); <-- You should see this once only in your program
        }

        return _instance;
    }

    return nil;
}

このクラスは、2つのビューで設定および読み取りの両方を行う必要があるメインコンテンツとして3つの可変配列を使用します。

4

1 に答える 1

2

私があなたの質問を正しく理解していれば、答えは次のとおりだと思います。

  1. 次のようなものを使用できます。

    SpeecherDataController * localReference = [SpeecherDataController instance]; 
    

    そして後で:

    [localReference someMessage:param]; // or ...
    localReference.property = whatever; 
    
  2. いいえ、クラスのSpeecherDataControllerメソッドもクラスメソッドにする必要はありません(つまり、+プレフィックスを付ける必要はありません-。クラス内のivarにアクセスする場合に使用できます)。

注:の実装でに置き換えたいと思い[[self alloc] init];ます。[[SpeecherDataController alloc] init];instance

(また、注:上記の「ここ」へのリンクをたどって前の質問を確認することはできませんでした。誤解した場合はお詫び申し上げます。)

于 2012-07-24T04:18:17.033 に答える