Singleton属性不能在外部类中使用

时间:2012-06-08 15:04:23

标签: objective-c ios

我创建了一个名为“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访问其他属性?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作从ViewController.m访问Singleton类的属性:

[[GCTurnBasedMatchHelper sharedInstance] pick1];

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

+(GCTurnBasedMatchHelper*)sharedInstance {

   //Singleton setup here

}

tricker位,是从您的Singleton访问ViewController.m中的属性。我建议为您的Singleton创建一个Data SourceDelegate,以返回您想要的属性。

   -(NSMutableArray*)viewControllerProperty {

        return self.myViewControllerPropertyArray;

  }

假设-viewControllerProperty是您单身人士的Delegate方法。在您的单身人士中,您现在可以通过从单身人士中调用此属性来访问ViewController类属性。

[self.delegate viewControllerProperty];

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

答案 1 :(得分:1)

首先,您在视图控制器中导入文件:#import "GCTurnBasedMatchHelper"

然后

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

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