2010-08-19 59 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