2013-05-27 48 views
0

在我的應用程序,有其定義爲如何在不使用對象或類方法的情況下調用另一個類的變量?

#define IMG_INIT_URL @"http://www.xxxx/index.php"

一個共同的類中的常數現在我有改變它作爲variable.But的要求,我的問題是,我經常使用這個常量我例如代碼:

NSString *imgUrlString = [NSString stringWithFormat:@"%@%@",IMG_INIT_URL,[[[storeDet objectForKey:@"store_imgurls"] objectAtIndex:0]objectForKey:@"simg_imgurl"]]; 

當我改成了的變量i具有通過需要在我的代碼很多的編輯對象或類方法中檢索它。所以我可以像現在一樣維護代碼(即,不使用對象或類方法訪問變量)?

回答

1

你可以改變的定義,以

#define IMG_INIT_URL [UIApplication.sharedApplication imgInitURL] 

,然後在您的UIApplication子類或類別的UIApplication添加- (NSString *)imgInitURL方法。或者將該方法添加到應用程序委託(如果更方便)並相應地修改該定義。

+2

'NSApplication'設置新的價值呢?在iOS中?你可能是指'UIApplicationDelegate'。 – Mar0ux

+0

感謝您的回答。還有一件事,這是一個根地址。我有更多的URL定義爲常量。現在我將它們定義爲靜態。我可以定義它們與IMG_INIT_URL相關嗎? – manujmv

+0

@ Mar0ux:你是對的,我錯過了iOS標籤。 –

1

您可以隨時在.pch文件中對其進行定義,該文件通常位於Supporting Files文件夾中,因此您需要將其用於您想要的位置。我個人也包括一些我需要在不同課程中使用的課程。然後,我不需要在每個我使用的課程中加入。此外

#define IMG_INIT_URL [Constants sharedInstance].imgURL 

Edit>Refactor下檢查了Xcode的重構:

1

假設你在一個名爲Constants一個單獨的類定義一個屬性imgURL,你可以做到這一點。

0

,您可以在使用whereevr你想使用NSUserDefault如下

[[NSUserDefaults standardUserDefaults] setValue:@"http://www.xxxx/index.php" forKey:@"IMG_INIT_URL"]; 

和訪問。

NSString *aReturnValue = [[NSUserDefaults standardUserDefaults] valueForKey:@"IMG_INIT_URL"]; 
0

你可以通過在你的AppDelegate類中設置變量來實現。創建AppDelegate.h一個變量給出

@property (strong, nonatomic) NSString *imageInitURL; 

和綜合,在AppDelegate中.m文件

@synthesize imageInitURL; 

然後,如果你想在最初設定的值,U可以設置,在「應用程序didFinishLaunchingWithOptions :(的NSDictionary *)launchOptions」方法

[self setImageInitURL:@"http://www.xxxx/index.php"]; 

然後就可以從通過的appDelegate任何類訪問此共享實例等給出,

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[appDelegate imageInitURL]; 

用同樣的方法,你可以從任何類等給出

[appDelegate setImageInitURL:@"your new URL"]; 

希望這將幫助你:)

+0

thx爲您的答覆。但在你的回答中,我不得不改變我使用這個常量的代碼。我的問題是如何避免這種情況? – manujmv

+1

#定義不是恆定的。它只是用你爲之定義的名稱取代名稱。 –

+0

thx4你的信息 – manujmv

相關問題