2011-06-05 187 views
0

我正在研究一個基於nvaigation的應用程序,我想在其中使用「全局變量」。 我用AppDelegate類中,每個視圖我想我喜歡下面來訪問的變量:全局變量訪問問題iphone

.H

@interface Main : UIViewController{ 
    iMEAppDelegate *datacenter; 
} 

@property (nonatomc, retain) iMEAppDelegate *datacenter; 

@end 

.M

@synthesize dataCenter; 

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    dataCenter = (iMEAppDelegate *)[[UIApplication sharedApplication] delegate]; 
} 

現在第一次視圖出現它工作正常,但當導航到另一個 之一併返回並壓縮具有以下代碼的按鈕時,會引發EXC_BAD_ACCESS錯誤:

if ([dataCenter.userName isEqualToString:@""]){ 
SingIn *obj = [[SingIn alloc] initwithNimName:@"SingIn" bundle:nil]; 
[dataCenter.navController pushViewController:obj animated:YES]; 
[obj release]; 

我不知道爲什麼會發生這種情況,我認爲這可能是一個內存管理問題,但我找不到解決方案。

請幫忙。

+0

'initwithNimName:bundle:'?您是否複製並粘貼了代碼或手工輸入代碼,因爲它應該是'initWithNibName:bundle:'。 – DarkDust 2011-06-05 15:33:47

+0

我用手輸入了部分內容:) – user454739 2011-06-05 15:37:49

+0

這個問題與你的情況非常具體相關,不可能在將來幫助任何人。您似乎對您正在使用的語言和框架的基本問題以及代碼的編譯時和運行時環境感到困惑。 – 2011-06-05 15:45:48

回答

0

從您提供的代碼中,我猜測您的EXC_BAD_ACCESS的原因是您忘記保留您的AppDelegate的屬性,例如, dataCenter.userName。

+0

我想我做到了: @property(nonatomic,retain)NSString * userName; – user454739 2011-06-05 15:39:15

+0

然後只是嘗試調試它。當你遇到崩潰時,抓住你的調用堆棧,嘗試打印懷疑這些變量的值,尤其是那些沒有值的變量。 – ZhangChn 2011-06-05 15:42:58