2010-08-19 7 views
0

2 개의 클래스가 변수를 공유 했으므로 응용 프로그램을 만들려고합니다. 코드를 좀 더 깔끔하게 보이게하기 위해서 나는 제 3의 클래스를 만들었습니다. 이 "제 3의 클래스"유일한 일은이 변수를 수용하는 것입니다.다른 클래스의 변수 설정

클래스 3에서는 "get"및 "set"메서드를 사용합니다.

SharedURL.H (클래스 3)

@interface SharedURL : NSObject { 
NSString *theURL; 
} 
-(NSString *)getTheURL; 
-(void)setTheURL:(NSString *)blah; 
@property (readwrite, copy) NSString *theURL; 
@end 

구현 : 클래스 1 및도 2에

#import "SharedURL.h" 


@implementation SharedURL 

@synthesize theURL; 

-(NSString *)getTheURL; 
{ 
return theURL; 

} 
-(void)setTheURL:(NSString *)blah; 
{ 
theURL=blah; 

} 
@end 

: 가 나는 매우

같은 인스턴스 변수를 설정 클래스 헤더 가져올

SharedURL * XMLURL;

나는 그런 구현에 나는 내가 fallowing 코드를 구현 할 때마다 그러나 getter 메소드가 전무을 반환이

[XMLURL setTheURL:@"http://localhost:8888/xml/MyXMLFile.xml"]; 

같은 설정 방법을 설정 때문에

@property (readwrite, assign) SharedURL *XMLURL; 

같은 속성을 정의합니다.

NSLog (@ "url은 % @", [XMLURL getTheURL]);

어떻게하면 실제로 입력 된 변수를 저장 한 다음 반환 할 수 있습니까? 나는 약간의 샘플 코드를보고 있는데, 내 잘못을 발견 할 수 없다. 나는 그것이 내가 어리석은 것을 간과하고 있다고 생각하는 것처럼 완벽하게 잘하고있는 것처럼 보인다.

답변

0

내가 이해한다면, 클래스 1 또는 2 (클래스 1)에서 클래스 3을 호출하고 URL을 설정 한 다음 클래스 2로 이동 한 다음 URL 만 요청하면 되겠습니까?

여러분의 문제는 여러분이 각 객체에 대해 독립적 인 것을 호출하고 있다는 것입니다. -(NSString *)getTheURL-(void)setTheURL 대신 +(NSString *)getTheURL+(void)setTheURL (.h 및 .m 파일 모두)로 변경해야 변수를 변경할 수 없다고 말할 수 있습니다.

+0

하지만 정적 클래스로 설정하면 값을 저장하는 데 사용하는 인스턴스 변수에 액세스 할 수 없습니까? –

+0

인스턴스 앞에 인스턴스를 선언 한 다음 정적 NSString * theURL을 만듭니다. –

+0

비슷한 문제가 있는데 "인스턴스 변수 'theURL'클래스 메서드에서 액세스했습니다. –

관련 문제