0

在我的应用程序中,公共类中有一个常量,定义为

#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"]];

当我将它更改为变量时,我必须通过需要在我的代码中进行大量编辑的对象或类方法来检索它。那么我可以像现在一样维护代码(即,在不使用对象或类方法的情况下访问变量)吗?

4

5 回答 5

1

您始终可以在.pch通常在Supporting Files文件夹中找到的文件中定义它,因此您需要在需要的地方使用它。我个人还包括一些我需要在不同类中使用的类。然后,我不需要包含在我使用的每个类中。

于 2013-05-27T06:27:44.637 回答
1

假设您imgURL在名为 的单例类中定义了一个属性Constants,您可以这样做:

#define IMG_INIT_URL [Constants sharedInstance].imgURL

Edit另外,在>下查看 XCode 的重构Refactor

于 2013-05-27T06:29:31.233 回答
1

您可以将定义更改为

#define IMG_INIT_URL [UIApplication.sharedApplication imgInitURL]

然后- (NSString *)imgInitURL在您的 UIApplication 子类或 UIApplication 类别中添加一个方法。或者,如果这样更方便,则将方法添加到应用程序委托并相应地修改定义。

于 2013-05-27T06:33:00.077 回答
0

您可以使用 NSUserDefault 如下

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

并使用您想要的任何地方访问它。

 NSString *aReturnValue = [[NSUserDefaults standardUserDefaults] valueForKey:@"IMG_INIT_URL"];
于 2013-05-27T06:37:57.577 回答
0

您可以通过在 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"];

希望对你有帮助 :)

于 2013-05-27T06:46:26.463 回答