-2

在我的 .m 文件中,我声明了这个变量

static NSString* MyGlobalPassword;

在 .m 文件中,我有一个类方法,我在另一个类中调用以获取 NSString

    + (NSString *) updateMessageString: (NSString *) msgString
{
    MyGlobalPassword = msgString;

    return MyGlobalPassword;
}

我想在同一个类的实例方法中访问 MyGlobalPassword

 - (void) Access
    {
        NSLog(@"I've retrieved it %@", MyGlobalPassword);
    }

当我尝试执行此操作时,Objective-C 会引发无法识别的选择器错误。它不想让我在实例方法中访问该变量。我怎么能强迫它呢?

4

2 回答 2

0

我怀疑您收到错误是因为您的静态变量未初始化。在 .h 文件中声明变量通常不是一个好主意,因为它们不能以这种方式包含在许多地方(无需额外的工作和头痛)。您可能希望像这样在标题中外部声明:

extern NSString* MyGlobalPassword;

并像这样在你的 .m 中声明它:

NSString* MyGlobalPassword;

此外,您通常不想制作这样的全局变量。要么你应该有一个被分配一次并在许多地方使用的单例类,要么你应该让它成为一个类成员。您也可以作弊并执行上述操作,但在 .m 文件中将其设为静态并添加类访问器以在任何地方获取它。

于 2012-09-15T07:10:53.903 回答
0

每当您在 .h 文件中声明变量时,该类都会将其作为其实例变量或属性。因此,它只能通过其对象访问。在 .m 文件中声明该变量“MyGlobalPassword”。现在,您可以在类方法以及实例方法中访问该“全局”变量。

于 2012-09-15T09:08:08.837 回答