2011-03-22 124 views
0

如何訪問其他類的變量?這是我實現它的方式。其他類的訪問變量

@interface Class1 :NSObject { 

NSString * Data; } @property(nonatomic,retain)NSString * Data;

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

和Class2中:

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

我得到c.Data爲Class2中無效。我在這裏做錯了什麼?

----------- -------------- MyClass1的

@interface APIManager:NSObject的{ 的NSString *數據; }

@property(nonatomic,retain)NSString * Data;

- (void)getData;

@end

@implementation APIManager

@synthesize數據;

- (void)getData self.Data = @「response」; }

-------- myClass2 -------------

@interface搜索:NSObject的{

}

- (空)searchForItems:(NSString *)query;

@end

@implementation搜索

- (無效)searchForItems:(的NSString *)查詢{ APIManager * apiManager = [[APIManager的alloc] INIT]; [apiManager getData]; NSLog(@「%@」,[apiManager Data]); }

回答

1

你應該使用的self.Data = @"something"代替self.Data = "something"

+0

對不起,我沒有寫出整個代碼。它只是一個摘錄。 self.Data = @「Somethin」是正確的,並且在接口中聲明瞭「Data」。 – 2011-03-22 15:25:17

+0

你仍然缺少幾塊(這兩種方法應該被標記爲這樣幷包含在界面中),但除此之外,代碼沒有明顯的問題。你可能想發佈一個更完整的例子;) – 2011-03-22 15:27:33

+0

我已經添加了我的代碼。你能告訴我我哪裏出錯了嗎? – 2011-03-22 15:44:35

0

在Objective-C,你必須使用@"something"而不是"something"。你是不是錯過了變量聲明?在你的@interface你應該做一些像NSString *Data

+0

問題解決。我正在做一種多線程。 – 2011-03-22 16:20:46