根据“设置”包中的值更改全局变量

时间:2014-09-04 12:51:52

标签: ios objective-c

我的项目加载了一个设置包,它保留了几个主机地址,一个表示主机地址的变量,根据用户的喜好改变了,在app中我通过#define关键字将主机地址设置为全局变量。

#define定义的变量无法更改,那么extern呢?

现在我想根据Settings包中的值更改全局变量,我该如何实现?

提前致谢!

2 个答案:

答案 0 :(得分:0)

使用包含作为属性公开的设置的单个对象会更好,但它应该只是用NSUserDefaults覆盖你所拥有的内容。

假设你有Settings.h

extern NSString *hostAddress1;
extern NSString *hostAddress2;
extern NSString *hostAddress3;

Settings.m

NSString *hostAddress1 = nil;
NSString *hostAddress2 = nil;
NSString *hostAddress3 = nil;

然后可以将它们设置为:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
hostAddress1 = [defaults objectForKey:@"hostAddress1"];
hostAddress2 = [defaults objectForKey:@"hostAddress2"];
hostAddress3 = [defaults objectForKey:@"hostAddress3"];

答案 1 :(得分:0)

#define仅由预处理器使用,因此tl; dr答案为

但是,在一个更详细的答案中,你可以做一些像trojanfoe的回答。您仍然可以通过更改现有的#define来使用这些全局变量来补充它:

#define SERVER_HOST hostAddress1