IPhone:Objective C全局变量

时间:2011-07-29 12:15:16

标签: objective-c

我知道有关SO中全局变量的各种帖子,但没有任何帮助。 我的问题是 - 在我的AppDelegate.h中,我声明了两个变量x和y。在我的ClassA中,我导入了AppDelegate.h并添加了:

AppDelegate  mainDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];

并将值分配给mainDelegate.xmainDelegate.y

在ClassB中,我将这些x和y指定为

label1.text = mainDelegate.x;
label2.text = mainDelegate.y;

没有错误,但它是null ..没有任何内容显示为标签的文本。

有人可以帮忙..

编辑: 在AppDelegate.h中:

@property (nonatomic, copy) NSString *x,*y;

在ClassA.m

mainDelegate.x=[[NSString alloc] initWithString:[homeArray objectAtIndex:indexPath.row]];

这个mainDelegate.x我试图从ClassB获取并且它是null。

2 个答案:

答案 0 :(得分:1)

你应该使用

@property (nonatomic, copy) NSString *x,*y; 

而不是

@property (nonatomic, retain) NSString x,y; 

通过使用副本,您可以确保文本标签保持一致。保留意味着如果您在某处更改x和y的值,则文本标签也会更改。

答案 1 :(得分:-1)

将x和y变量设置为静态变量会有帮助吗?

static int x;
static int y;

编辑:

实际上,我注意到你要为UILabel(?)分配一个值。你有没有在分配值之前分配和初始化你的UILabel?这是获得空值的一个可能原因。