【问题标题】:Objective-C: How Can I Access String Variable As a Global?Objective-C:如何将字符串变量作为全局变量访问?
【发布时间】:2010-02-10 15:43:30
【问题描述】:

我是 iPhone 开发的新手。我想在所有类方法中访问一个字符串变量,并且我想全局访问该字符串。我该怎么做?

请帮帮我。

【问题讨论】:

    标签: iphone objective-c declaration


    【解决方案1】:

    撇开全局变量的问题,如果它们是良好的编码习惯......

    在项目的 .m 文件中的任何 Objective-C 类之外创建字符串:

    NSString *myGlobalString = @"foo";
    

    然后将声明放在一个头文件中,该文件包含在所有其他想要访问您的字符串的文件中:

    extern NSString *myGlobalString;
    

    好吧,我不能把它完全放在一边。您是否考虑过将“全局”字符串放在其他地方,可能在您的应用程序委托中作为(可能是只读的)属性?

    【讨论】:

    • + (NSString*)myString; ... [FooClass myString];
    【解决方案2】:

    创建全局变量的首选方法是:

    1. 创建一个单例类来存储 变量作为属性。
    2. 创建一个具有返回变量的类方法的类。 将类接口放在 通用标头,因此所有类 项目继承它。

    方法(2)的最大优点是它是封装和可移植的。需要在另一个项目中使用使用全局的类?只需将带有变量的类与它们一起移动即可。

    【讨论】:

      【解决方案3】:

      您可以通过在委托类中实现 getter 和 setter 来实现。

      在委托 .h 文件中

      包括 UIApplication 委托

       @interface DevAppDelegate : NSObject <UIApplicationDelegate>
      
        NSString * currentTitle;
      
       - (void) setCurrentTitle:(NSString *) currentTitle;
       - (NSString *) getCurrentTitle; 
      

      在Delegate实现类.m中

       -(void) setCurrentLink:(NSString *) storydata{
      currentLink = storydata;
      
      }
      
      -(NSString *) getCurrentLink{
      if ( currentLink == nil ) {
          currentLink = @"Display StoryLink";
      }
      return currentLink;
      }
      

      所以你要评估的变量是通过setter方法和你想要字符串的类在currentlink字符串中设置的,只需使用getter方法。

      一切顺利

      【讨论】:

        【解决方案4】:

        我发布了一篇关于我的方法的文章:

        http://www.pushplay.net/2011/02/quick-tip-global-defines/

        这是我主要用于通知键的东西。创建 globals.h 文件并将其添加到 (your_project_name)_Prefix.pch 文件将确保它可全局访问...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 2016-05-04
          • 1970-01-01
          • 2010-09-22
          • 1970-01-01
          相关资源
          最近更新 更多