2011-07-29 58 views
0

我知道那裏有關於全局變量的各種帖子,但沒有任何幫助。 我的問題是 - 在我的AppDelegate.h中,我聲明瞭兩個變量x和y。在我的ClassA的,我進口AppDelegate.h並補充說:iPhone:目標C全局變量

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

和分配值mainDelegate.xmainDelegate.y

在ClassB的,我分配這些X和Y

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

沒有錯誤,但它是null..nothing顯示爲標籤的文本。

任何人都可以請幫助..

編輯: 在AppDelegate.h:

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

在ClassA.m

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

這mainDelegate.x我試圖從獲得ClassB,它是空的。

+0

你是怎麼聲明x和y的?他們是屬性嗎? – Abizern

+0

請提供一些代碼片段。 –

+0

在AppDelegate.h中聲明x和y '@property(nonatomic,retain)NSString x,y;' – dinny

回答

1

您應該使用

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

,而不是

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

通過使用副本,您可以確保文本標籤保持一致。雖然保留意味着如果您在某處更改x和y的值,您的文本標籤也會更改。

+0

謝謝,但後來'複製'沒有幫助 – dinny

+0

然後我需要看到你分配NSString時,它應該是@property(非原子,複製)NSString * x,* y;也。 (添加*)。 –

+0

你忘了'*'。 – Abizern

-1

將您的x和y變量設置爲靜態變量有幫助嗎?

static int x; 
static int y; 

編輯:

事實上,我注意到你將值分配給一個UILabel(?)。你有分配和初始化您的UILabel賦值之前?這是獲得空值的一個可能的原因。

+0

我給了 NSLog(@「%sthe value」,mainDelegate.x); 它顯示 ??「 在控制檯 – dinny

+0

@dinny - 你正在嘗試記錄一個NSString,而不是一個C字符串。你應該做的是NSLog(「%@ the value」,mainDelegate.x) – Abizern

+0

你可以檢查:if(label1 == nil){NSLog(@「label1 is nil」); }看看它是否打印出「label1爲零」? – Zhang