2010-08-25 85 views
0

这是一个适合你们的简单工具。我定义了一个类来存储变量,以便我可以在不同的ViewController中重用这些变量。在2个ViewControllers中共享变量

这里是我如何做到这一点,它`显然不工作(这就是为什么我要问一个问题...):

我声明一个类:

VariableStore.h

@interface VariableStore : NSObject { 

    int evTe; 

} 

@property (nonatomic) int evTe; 

+ (VariableStore *)shareInstance; 

@end 

VariableStore.m

@implementation VariableStore 
@synthesize evTe; 

+ (VariableStore *)sharedInstance { 

    static VariableStore *myInstance = nil; 
    return myInstance; 

} 
@end 

现在在我的FirstViewController我想设置为evTe值:

[[VariableStore sharedInstance] setEvte:2]; 
NSLog(@"value testing, %i", evTe); 

而这种不断不幸的是返回0,我m obviously missing something important here but I can't figure out what it is . Later on I倒要在FirstViewController这里设置evTe值,然后再用它放回在SecondViewController ..

+0

u能显示setEvte的代码:function。 – 2010-08-25 07:24:54

+0

Suriya:他使用合成的getter和setter,没有代码显示... – Toastor 2010-08-25 07:36:18

+0

Julz:你也有一个拼写错误:在你的界面声明中,你的方法叫做shareInstance(缺少“d”),而它在实现中共享实例。如果你在你的项目中也有这个,这应该会引发一个错误或者至少是一个警告... – Toastor 2010-08-25 07:38:18

回答

0

首先,你必须在函数之外声明静态变量两个控制器均可访问。

static VariableStore* myInstance = nil; 

的单sharedInstance应该是:

if(myInstance == nil) 
{ 
    myInstance = [[VariableStore] alloc] init]; 
} 
return myInstance; 
+0

诀窍,谢谢! – 2010-08-25 11:25:09

4

你设置你的共享实例到零,然后再返回它:

static VariableStore *myInstance = nil; 
return myInstance; 

一比零实例不会握住你的变量。这是零。

首先你不应该使用单例传递变量。如果你打算这样做,那么你可以使用全局变量(不要这样做)。其次,如果你坚持使用单身,你需要read up on how to use them。最后,如果你想在视图控制器之间传递变量,你可能需要另一个视图控制器,它是这两个视图控制器的父对象,以方便在它们之间传递数据,或者需要调用另一个视图控制器并采取第一个或其第一个视图控制器或其第一个视图控制器或其第一个视图控制器的第一个视图控制器或其第一个视图控制器数据作为参数。

+0

嗨马特, 感谢您的建议,显然我宁愿直接从SecondViewController查询第一个视图控制器,但我不知道从哪里开始,我应该特别注意什么? 谢谢 – 2010-08-25 11:15:42

1

我觉得在nslog中你不应该只输出evTe,而是[[VariableStore sharedInstance] evTe]。

2

那么,你要求evTe的值,而不要调用它所属的对象。试试这个:

NSLog(@"value testing, %i", [[VariableStore sharedInstance] evTe]); 

如果继续使用单件的次数,你可能想要做的:

VariableStore *vStore = [VariableStore sharedInstance]; 

所以你可以做:

[vStore setEvTe:2]; 
NSLog(@"value testing, %i", [vStore evTe]); 

而且看出来为什么马特说关于击倒你的单身人士;)