簡體   English   中英

如何在不使用對象或類方法的情況下調用另一個類的變量?

[英]how to call a variable of another class without using objects or class methods?

在我的應用中,一個通用類中有一個常量,定義為

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

現在我需要將其更改為變量。但是我的問題是我在代碼中經常使用此常量,例如:

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

當我將其更改為變量時,我必須通過需要對代碼進行大量編輯的對象或類方法來檢索它。 那么我可以保持代碼與現在相同(即,不使用對象或類方法訪問變量)嗎?

您總是可以在.pch文件中定義它, .pch文件通常在Supporting Files夾中找到,因此您需要在需要的地方使用它。 我個人還包括一些需要在不同類中使用的類。 然后,我不需要在我使用的每個類中都包括在內。

假設您在名為Constants的單例類中定義了一個屬性imgURL ,您可以這樣做:

#define IMG_INIT_URL [Constants sharedInstance].imgURL

此外,檢查出Xcode的下重構Edit > Refactor

您可以將定義更改為

#define IMG_INIT_URL [UIApplication.sharedApplication imgInitURL]

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

您可以如下使用NSUserDefault

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

並使用所需的whereevr訪問它。

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

您可以通過在AppDelegate類中設置變量來實現。 按照給定的條件在AppDelegate.h中創建一個變量,

@property (strong, nonatomic) NSString *imageInitURL;

並綜合到AppDelegate .m文件中

@synthesize imageInitURL;

然后,如果要初始設置該值,則可以在“ application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions”方法中進行設置

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

然后,您可以通過appDelegate共享實例從任何類訪問此對象,如給定的那樣,

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

您可以像給定的任何類一樣使用這種方法來設置新值

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

希望這個能對您有所幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM