从实例方法objective-c中的类方法访问数据



在我的.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抛出了一个无法识别的选择器错误。它不想让我访问实例方法中的那个变量。我怎么能强迫它呢?

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

extern NSString* MyGlobalPassword;

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

NSString* MyGlobalPassword;

此外,您通常不希望生成这样的全局变量。要么你应该有一个单独的类,只分配一次并在很多地方使用,要么你应该让它成为一个类成员。您也可以作弊并执行上述操作,但在.m文件中使其保持静态,并添加类访问器以在任何地方访问它。

无论何时在.h文件中声明变量,该类都会将其作为实例变量或属性。因此,它只能由其对象访问。在.m文件中声明变量"MyGlobalPassword"。现在,您可以在类方法和实例方法中访问该"全局"变量。

最新更新