【问题标题】:How to access a variable from a H file如何从 H 文件中访问变量
【发布时间】:2015-05-27 11:07:30
【问题描述】:

我在 Constants.h 文件中定义了一些变量。

#ifndef Constants_h
#define Constants_h

static NSString *SERVER_IMG_URL = @"http://localhost/img";
...

如果我在 M 文件中导入 Constants.h。如何访问 SERVER_IMG_URL??

我想用它,不要在所有文件中重复url,只调用这个变量。因为,如果我需要更改 IP,请在一个文件中更改,而不是更多。

谢谢

【问题讨论】:

    标签: ios objective-c constants


    【解决方案1】:

    我希望这会有所帮助..

    将此写入常量文件中..

    #define kURLname   @"http://localhost/img"
    

    在 .m 中导入常量文件后,在你的项目 .m 文件中像这样使用它...

    NSString *SERVER_IMG_URL = kURLname;
    

    【讨论】:

      【解决方案2】:

      在 Constant.h 文件中,您可以将变量声明为

      FOUNDATION_EXPORT NSString *const SERVER_IMG_URL;

      在.m文件中

      NSString *const SERVER_IMG_URL = @"http://localhost/img";
      

      之后将 Contant.h 导入 .pch 文件,以便整个项目都可以访问您的变量。

      【讨论】:

        【解决方案3】:

        如果可以的话,我会避免使用#define。

        它们更难调试,因为它们在预处理时被解包(因此您编写的代码和您实际运行的代码可能完全相同)并且缺乏您可以从中获得的潜在类型安全检查命名类型。

        我会使用 VMConstants.h 和 VMConstants.m 对来解决这个问题。

        从你的 VMConstants.h 中的类似内容开始

        extern const NSString * const kURLname;
        

        然后在您的 VMConstants.m 文件中

        const NSString * const kURLname = @"http://localhost/img";
        

        我会尽可能多地使用 const,以便它尽可能不可变(更少的移动部分),并为您的常量名称添加一个合适的前缀,以避免与认为他们的第三方库需要的其他任何人发生冲突一个常量。

        我还会问自己,您是否真的需要该常量文件,因为随着时间的推移,它很可能会成为东西的垃圾场,并且会不断增长,直到您的应用完全与它。

        更糟糕的是,人们可能会以非预期的方式重复使用那里的价值观。颜色是这种情况的常见颜色,我发现突然之间你的按钮和导航栏 UI 是相互关联的。

        简而言之,尽可能避免公开文字值(因此,将它们放在 m 中,只在 h 中公开类型名称),并尽可能避免使用全局变量。

        【讨论】:

          猜你喜欢
          • 2015-07-22
          • 1970-01-01
          • 2017-12-03
          • 1970-01-01
          • 1970-01-01
          • 2018-04-04
          • 2019-08-02
          • 2017-09-15
          • 1970-01-01
          相关资源
          最近更新 更多