我创建了一个名为“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访问其他属性?
谢谢!
答案 0 :(得分:2)
您可以通过执行以下操作从ViewController.m
访问Singleton类的属性:
[[GCTurnBasedMatchHelper sharedInstance] pick1];
假设-sharedInstance
是您的Singleton的初始化方法,即:
+(GCTurnBasedMatchHelper*)sharedInstance {
//Singleton setup here
}
tricker位,是从您的Singleton访问ViewController.m
中的属性。我建议为您的Singleton创建一个Data Source
或Delegate
,以返回您想要的属性。
-(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%的几率)。