在另一个类中设置一个变量
问题描述:
我想创建一个应用程序,共有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]);
我如何能得到这个实际保存,我称输入,然后返回它的变量。我正在看一些示例代码,我找不到我的错误,它看起来像我这样做完全没问题,我想我忽略了一些愚蠢的东西。
答
如果我没有理解这个权利,你是从任一类1或2调用3级(可以说1)和你去设定的网址,然后以2类,只索要网址,对不对?
我觉得你的问题是,您所呼叫的东西是独立的每个对象。我想你可以说-(NSString *)getTheURL
和-(void)setTheURL
,你需要将其更改为+(NSString *)getTheURL
和+(void)setTheURL
(在.H和.m文件两者)使得它不依赖于变量,而不是解决这个问题。
但是,如果我将这些设置为静态类,我无法访问我用来存储该值的实例变量? – 2010-08-19 16:31:09
不要让它成为ivar在实例之前声明它,然后使它成为'static NSString * theURL'。 – 2010-08-19 17:28:14
我有类似的问题,它说“实例变量'theURL'在类方法访问” – 2011-08-08 02:44:17