2010-08-25 88 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]); 

而且看出來爲什麼馬特說關於擊倒你的單身人士;)