2011-07-29 3 views
0

나는 전역 변수에 관한 여러 가지 게시물을 알고 있지만 아무 것도 도움이되지 않습니다. 내 문제는 - 내 AppDelegate.h에서 나는 두 변수 x와 y를 선언했다. 내를 ClassA에서 나는 AppDelegate.h 수입 및 추가 :IPhone : Objective C 전역 변수

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

및 할당 값을 mainDelegate.xmainDelegate.y에. ClassB가에서

, 나는

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

없음 오류로 이러한 x와 y를 할당하지만 null..nothing 레이블의 텍스트로 나타납니다.

사람이 도와주세요 수

..

편집 : AppDelegate.h에서 :

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

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

나는에서 얻을하려고이 mainDelegate.x ClassA.m에서 ClassB이며 null입니다.

+0

x 및 y를 어떻게 선언 했습니까? 그들은 속성이 있습니까? – Abizern

+0

일부 코드 스 니펫을 제공해주십시오. –

+0

x 및 y를 AppDelegate.h에 선언했습니다. '@property (nonatomic, retain) NSString x, y;' – dinny

답변

1

당신은, 당신은 텍스트 레이블간에 일관성이 유지 보장되는 복사를 사용하여

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

하지

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

를 사용해야합니다. retain은 x 및 y 값을 어딘가에 변경하면 텍스트 레이블도 변경된다는 것을 의미합니다.

+0

고마워,하지만 '복사'하지 않았다면 – dinny

+0

NSString을 할당 할 때 너를보아야한다. NSString * x, * y;는 @property (nonatomic, copy)이어야한다. 또한. (추가 *). –

+0

그리고'*'도 잊어 버렸습니다. – Abizern

-1

x 및 y 변수를 정적 변수로 설정하면 도움이됩니까?

static int x; 
static int y; 

편집 :

는 사실, 난 당신이 UILabel의 값을 할당하고 발견 (?). 할당 값 앞에 UILabel을 할당하고 초기화 했습니까? 그것이 null 값을 가져 오는 한 가지 원인 일 수 있습니다.

+0

내가 준 NSLog (@ "% sthe 값", mainDelegate.x); 콘솔에 값 ¿? "을 표시했습니다. – dinny

+0

@dinny - C 문자열이 아닌 NSString을 기록하려고합니다. NSLog ("% @ the value", mainDelegate.x) – Abizern

+0

확인할 수 있습니다 : if (label1 == nil) {NSLog (@ "label1 is nil"); } "label1 is nil"이 출력되는지 확인하십시오. – Zhang