全局变量返回Null

时间:2013-05-17 08:01:25

标签: iphone ios objective-c xcode

我有一个带有两个窗口的程序(两个窗口都是从同一个类文件控制的)和一个名为PersonName1Window AWindow B的全局变量。在Window A上有2个按钮,其中一个是:

-(IBAction)setPersonName:(id)sender
{
    PersonName1 = @"Tom";
}

另一个从窗口A变为窗口B

在Window B上有一个按钮:

- (IBAction)loadNames:(id)sender
{
    NSLog(@"%@",PersonName1);
}

问题在于屏幕发生变化,当我点击Window B上的按钮时,NSlog返回(null)而不是“Tom”。造成这种情况的原因是什么?

评论的更多信息:

PersonName1在主ViewController.h文件中声明为:

NSString* PersonName1;

以及该文件中的属性。

@property (nonatomic, retain) NSString *PersonName1;

然后在ViewController.m文件中合成。问题中列出的两个IBAction也都在ViewController.m文件中。

2 个答案:

答案 0 :(得分:0)

在我看来,你需要点击第一个窗口上的第一个按钮,为PersonName1分配值。如果您没有单击第一个按钮但是单击了第二个按钮,那么它将返回null,因为只有在您单击第一个按钮时才会发生PersonName1上的声明。

答案 1 :(得分:0)

我认为你没有将值传递给一个视图控制器到另一个视图控制器。

例如: 第一个视图控制器 具有全局值NSString * nameString。 如下所示

@property (nonatomic, strong) NSString *PersonName1;

第二个视图控制器  它的全局字符串为NSString * nameString 如下所示

@property (nonatomic, strong) NSString *PersonName1;

当你想将一个视图控制器的值传递给另一个视图控制器时,如下所示

 SecoundViewController *SVC = [[SecoundViewController alloc]initWithNibName:@"nibName" bundle:nil]; 
SVC.PersonName1 = self.PersonName1;
 [self.navigationController pushViewController:SVC animated:YES];