2010-08-19 56 views
0

我想创建一个应用程序,共有2个类共享一个变量。为了让代码看起来更清洁一点,我创建了第三个类。这个“三等”唯一的工作就是容纳这个变量。在另一个类中设置一个变量

在3类我把“得到”和“设置”方法。

SharedURL.H(类3)

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

实现:

#import "SharedURL.h" 


@implementation SharedURL 

@synthesize theURL; 

-(NSString *)getTheURL; 
{ 
return theURL; 

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

} 
@end 

在1级和2: 我导入类头 我设置的实例变量像这样

SharedURL * XMLURL;

我定义属性,像这样

@property (readwrite, assign) SharedURL *XMLURL; 

然后在执行我设置这样的

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

的一套方法。然而,每当我实行休耕代码getter方法返回nil。

的NSLog(@ “的URL是%@”,[XMLURL getTheURL]);

我如何能得到这个实际保存,我称输入,然后返回它的变量。我正在看一些示例代码,我找不到我的错误,它看起来像我这样做完全没问题,我想我忽略了一些愚蠢的东西。

回答

0

如果我没有理解这个权利,你是从任一类1或2调用3级(可以说1)和你去设定的网址,然后以2类,只索要网址,对不对?

我觉得你的问题是,您所呼叫的东西是独立的每个对象。我想你可以说-(NSString *)getTheURL-(void)setTheURL,你需要将其更改为+(NSString *)getTheURL+(void)setTheURL(在.H和.m文件两者)使得它不依赖于变量,而不是解决这个问题。

+0

但是,如果我将这些设置为静态类,我无法访问我用来存储该值的实例变量? – 2010-08-19 16:31:09

+0

不要让它成为ivar在实例之前声明它,然后使它成为'static NSString * theURL'。 – 2010-08-19 17:28:14

+0

我有类似的问题,它说“实例变量'theURL'在类方法访问” – 2011-08-08 02:44:17