我的项目加载了一个设置包,它保留了几个主机地址,一个表示主机地址的变量,根据用户的喜好改变了,在app中我通过#define
关键字将主机地址设置为全局变量。
#define
定义的变量无法更改,那么extern
呢?
现在我想根据Settings包中的值更改全局变量,我该如何实现?
提前致谢!
答案 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