0

「GCTurnBasedMatchHelper」というシングルトンを作成しました。これには、ヘッダーに次のコードが含まれています。

@property (nonatomic, retain) NSString *pick1;

実装では、次の行があります。

#import "GCTurnBasedMatchHelper.h"
//Some implementation code in here...
@synthesize pick1;

- (void) pick{
int r = arc4random() % 2;
if (r==0) {
    pick1 =[[NSString alloc] initWithFormat:@"Askerer"];
    NSLog(@"%@", pick1);
} else {
    pick1 =[[NSString alloc] initWithFormat:@"Answerer"];
    NSLog(@"%@", pick1);
    }
}

別のクラス実装ViewController.mからpick1の値にアクセスするにはどうすればよいですか?また、GCTurnBasedMatchHelper.mのViewController.mから他のプロパティにアクセスするにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

ViewController.m次のような操作を行うことで、シングルトンクラスのプロパティにアクセスできます。

[[GCTurnBasedMatchHelper sharedInstance] pick1];

と仮定すると、-sharedInstanceシングルトンの初期化方法は次のようになります。

+(GCTurnBasedMatchHelper*)sharedInstance {

   //Singleton setup here

}

ViewController.mトリッキーなビットは、シングルトンから入っているプロパティにアクセスすることです。目的のプロパティを返すシングルトンのData Sourceまたはを作成することをお勧めします。Delegate

   -(NSMutableArray*)viewControllerProperty {

        return self.myViewControllerPropertyArray;

  }

仮定-viewControllerPropertyDelegateあなたのシングルトンのための方法です。ViewControllerシングルトンで、シングルトンからこれを呼び出すことにより、クラスプロパティにアクセスできるようになりました。

[self.delegate viewControllerProperty];

もちろん、デリゲートの作成や設定は示していません。また、@synthesizingのような他の明白なものも示していません。それはあなたの質問の範囲にないので、私はあなたがこれを理解できると思います。

于 2012-06-08T15:08:16.490 に答える
1

まず、ViewControllerにファイルをインポートします#import "GCTurnBasedMatchHelper"

それで

NSString *string = [[GCTurnBasedHelper sharedHelper] pick1] //accessing the value of pick1

また、ロジックに誤りがあります。数値を1で変更(%)すると、常に0になります。代わりに2で変更する必要があります(両方の結果の確率を50%にしたい場合)。

于 2012-06-08T15:10:41.833 に答える