Objective-C中的全局字符串变量

时间:2011-11-26 04:06:09

标签: objective-c ios

  

可能重复:
  How to use global variables in Objective-C?

在我的Login.m文件中,我有

NSString *userName = txtUsername.text; // this is getting the text from the username text field and storing it in userName

问题是我还需要从不同的类访问变量userName,因此我需要将其声明为全局变量。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

一种选择是使其成为Application Delegate中的实例变量。可以从其他类实例轻松访问Application Delegate。这有点好,因为全局变量不是一个好的设计。

答案 1 :(得分:0)

我要做的是忘记变量,但在这些其他类中引用txtUsername.txt,否则你正在复制你试图保持更新的文本,希望你没有遗漏任何东西

所以在你的.h文件中,你把

{

UITextField *txtUsername;

}

我认为你已经拥有了。

然后:

@property (nonatomic, retain) UITextField *txtUsername;

然后在你的.m文件中,放在@implementation行下面的顶部:

@synthesize txtUsername;

然后在你要引用的.m文件中,转到它的.h文件并输入:

#import "Login.h"

在顶部,与其他导入行。然后把:

{

Login *login;

}

这会创建一个名为login的变量。然后,如果您使用的话,可以将其连接到xib,或者如果不是,则将其连接到代码中。然后,当你想要文本时,你只需输入:

login.txtUsername.text;

答案 2 :(得分:0)

考虑一个singleton类,它将保存您的全局变量。

要声明单例类,请查看以下示例,或者查看here

+(Constants *) instance {
    @synchronized(self) {
        if (gInstance == NULL) {
            gInstance = [[self alloc] init];
        }
    }

    return gInstance;
}


-(id) init {

    if (gInstance != NULL) {
        return gInstance;
    }

    self = [super init];

    if (self) {
      // do something clever
    }
    gInstance = self;
    return gInstance;
}