我在Constants.h文件中定义了一些变量。
#ifndef Constants_h
#define Constants_h
static NSString *SERVER_IMG_URL = @"http://localhost/img";
...
如果我在M文件中导入Constants.h。我如何访问SERVER_IMG_URL ??
我想使用它,不重复所有文件中的url,只调用此变量。因为,如果我需要更改IP,请将其更改为一个文件,而不是更多。
由于
答案 0 :(得分:3)
我希望这会有所帮助..
在常量文件中写这个..
#define kURLname @"http://localhost/img"
在.m中导入常量文件后,在你的项目.m文件中使用它...
NSString *SERVER_IMG_URL = kURLname;
答案 1 :(得分:2)
在Constant.h文件中,您可以将变量声明为
FOUNDATION_EXPORT NSString *const SERVER_IMG_URL;
并在.m文件中
NSString *const SERVER_IMG_URL = @"http://localhost/img";
之后在.pch文件中导入Contant.h,以便整个项目可以访问您的变量。
答案 2 :(得分:1)
如果可以,我会避免使用#define。
它们更难调试,因为它们在预处理时被解压缩(因此您编写的代码和实际运行的代码可能相当相同)并且缺少可能从中获得的潜在类型安全检查命名类型。
我会使用VMConstants.h和VMConstants.m对来解决这个问题。
从VMConstants.h中的类似内容开始
extern const NSString * const kURLname;
然后在你的VMConstants.m文件中
const NSString * const kURLname = @"http://localhost/img";
我会使用尽可能多的const,因为它尽可能不可变(运动较少的部分)并为你的常量名称添加一个合适的前缀,以避免与认为他们的第三方库需要的任何其他人发生冲突一个常数。
我也会问你自己真的是否需要Constants文件,因为它很可能会随着时间的推移变成一个倾销的东西,只是成长并增长直到你的应用程序完全交织在一起它。
更糟糕的是,人们可能会以非预期的方式重复使用价值观。对于这种情况,颜色是常见的,我发现,突然你的按钮和导航栏UI是相互关联的。
简而言之,避免将文字值暴露在可能的位置(因此,将它们放在m中,只是在h中公开类型名称),并尽可能避免使用全局变量。