Objective-C:如何作为全局访问字符串变量?

时间:2010-02-10 15:43:30

标签: iphone objective-c declaration

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

请帮帮我。

4 个答案:

答案 0 :(得分:15)

不考虑全局变量的问题以及它们是否是良好的编码实践......

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

NSString *myGlobalString = @"foo";

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

extern NSString *myGlobalString;
好吧,好吧,我不能完全抛弃它。您是否考虑将“全局”字符串放在其他位置,可能在应用程序委托中作为(可能是只读的)属性?

答案 1 :(得分:2)

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

  1. 创建一个存储的单例类 变量作为属性。
  2. 创建一个具有返回变量的类方法的类。 把类接口放在 通用标题所以所有类都在 该项目继承了它。
  3. 方法(2)的最大优点是它是封装的和可移植的。需要使用在另一个项目中使用global的类吗?只需使用变量和类一起移动类。

答案 2 :(得分:1)

您可以通过在委托类中实现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;
}

因此,要评估的变量是通过setters方法和类在currentlink字符串中设置的,只需使用getter方法。

一切顺利

答案 3 :(得分:0)

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

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

这主要用于通知密钥。创建globals.h文件并将其添加到(your_project_name)_Prefix.pch文件将确保它可以全局访问...