其他类的访问变量

问题描述:

如何访问其他类的变量?这是我实现它的方式。其他类的访问变量

@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]); }

你应该使用的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

在Objective-C,你必须使用@"something"而不是"something"。你是不是错过了变量声明?在你的@interface你应该做一些像NSString *Data

+0

问题解决。我正在做一种多线程。 – 2011-03-22 16:20:46