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通过执行以下操作来访问 Singleton 类的属性:

[[GCTurnBasedMatchHelper sharedInstance] pick1];

假设,-sharedInstance您的 Singleton 的初始化方法是什么,即:

+(GCTurnBasedMatchHelper*)sharedInstance {

   //Singleton setup here

}

棘手的一点是访问ViewController.m来自 Singleton 的属性。我建议为您的 Singleton 创建一个Data SourceDelegate返回您想要的属性。

   -(NSMutableArray*)viewControllerProperty {

        return self.myViewControllerPropertyArray;

  }

假设-viewControllerPropertyDelegate您的单身人士的一种方法。在您的单例中,您现在可以ViewController通过从您的单例中调用它来访问类属性。

[self.delegate viewControllerProperty];

当然,我没有展示创建和/或设置委托,也没有展示其他明显的东西,比如@synthesizing。我认为您可以解决这个问题,因为它不在您的问题范围内。

于 2012-06-08T15:08:16.490 回答
1

首先,您在 View Controller 中导入文件:#import "GCTurnBasedMatchHelper".

然后

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

你的逻辑也有错误。当你用 1 修改 (%) 一个数字时,你总是会得到 0。你应该用 2 来修改它(假设你希望两种结果都有 50% 的机会)。

于 2012-06-08T15:10:41.833 回答