我有一個程序,帶有兩個窗口(兩者都由同一個類文件控制)和一個名爲PersonName1
,Window A
和Window B
的全局變量。上Window A
有2個按鈕,其中一個:全局變量返回空
-(IBAction)setPersonName:(id)sender
{
PersonName1 = @"Tom";
}
和從窗口A切換到窗口乙
上窗口B中的其他有一個按鈕,其作用:
- (IBAction)loadNames:(id)sender
{
NSLog(@"%@",PersonName1);
}
的問題是每當屏幕變化,當我點擊窗口B上的按鈕,NSlog返回(空)而不是「湯姆」。這是什麼造成的?從評論
的更多信息:
PersonName1
宣佈在主ViewController.h文件爲這樣:
NSString* PersonName1;
並在該文件藏漢屬性。
@property (nonatomic, retain) NSString *PersonName1;
然後在ViewController.m文件中合成。問題中列出的兩個IBActions也都在ViewController.m文件中。
你在哪裏定義了'P ersonName1'? –
你稱之爲「窗口」是什麼? UIView的?的UIWindow?或UIViewController? –
可能發生的事情是,您的全球正在被autorelease池彈出吃掉。不幸的是,這就是爲什麼在Objective C中使用全局變量的一個壞主意的原因之一。你可能想要考慮的是使用單例類來保存變量,然後在類中使用全局可用的機制該單身人士改變變量。 –