2011-03-22 10 views
0

다른 클래스의 변수에 액세스하는 방법은 무엇입니까? 이것이 내가 구현 한 방법이다.다른 클래스의 액세스 변수

@interface Class1 :NSObject { 

NSString * 데이터; } @property (비 원자력, 보유) NSString * 데이터;

@implementation Class1 
@synthesize Data; 
someMethod{ 
self.Data = @"something"; 
} 

및 Class2의에서

:

@implementation Class2 
someMethodOfClass2{ 
Class1 *c=[[Class1 alloc]init]; 
[c someMethod]; 
NSString *str=c.Data; 
} 

나는 Class2의에서 널 (null)로 c.Data를 얻을. 내가 여기서 뭐 잘못하고 있니?

----------- myClass1 --------------

@interface의 APIManager : NSObject의 { 는 NSString * 데이터; }

@property (nonatomic, retain) NSString * 데이터;

- (void) getData;

@end

@implementation의 APIManager

@synthesize 데이터;

- (void) getData { self.Data = @ "response"; }

-------- MyClass2의 -------------

@interface 검색 : NSObject의 {

}

- (무효) searchForItems : (NSString *) 쿼리;

@end

@implementation 검색

- (무효) searchForItems (는 NSString *) 쿼리 { APIManager apiManager * = [APIManager ALLOC] INIT]; [apiManager getData]; NSLog (@ "% @", [apiManager 데이터]); }

답변

1

당신은 아마 대신 "something"@"something"를 사용할 필요가 오브젝티브 C에서 self.Data = @"something" 대신

+0

죄송합니다. 전체 코드를 작성하지 않았습니다. 그것의 발췌 부분. self.Data = @ "Somethin"이 적절하고 "Data"가 인터페이스에 선언되어 있습니다. –

+0

당신은 여전히 ​​두 조각을 놓치고 있습니다. (두 가지 방법 모두 인터페이스로 표시하고 인터페이스에 포함시켜야합니다.) 그렇지만 별도의 코드에는 문제가 없습니다. 좀 더 완벽한 예제를 게시하고 싶을 수도 있습니다.) –

+0

내 코드를 추가했습니다. 내가 어디로 잘못 가고 있는지 말해 줄 수 있니? –

0

self.Data = "something"의를 사용해야합니다. 또한 변수 선언을 놓치지 않았습니까? @interface에서 NSString *Data과 같은 작업을 수행해야합니다.

+0

문제가 해결되었습니다. 나는 멀티 스레딩을하고 있었다. –

관련 문제