无法从另一个类访问静态变量

Luc*_*rma 5 variables static objective-c

我有一个静态变量,我想从X-Code中的同一个项目中的另一个类访问.我已经在.h文件和.m文件中声明了它,给了它一个值,然后当我访问另一个类时,我得到一条错误消息说:

"在'yy'类型的对象上找不到属性'xx'"

我在.h中将变量声明为extern,并将其重新声明为.m中的变量类型.我试图在.h中将其更改为静态,但它仍然无法正常工作.是的,我已导入包含变量的文件,以防出现问题.

谁能帮我?

编辑:

这是我目前正在使用的代码:

source.h

static int anObject;

@interface source : NSObject
Run Code Online (Sandbox Code Playgroud)

source.m

static int a = 2

@implementation source
Run Code Online (Sandbox Code Playgroud)

destination.m

# include "source.h"

@implementation destination

- (void) anObjectTestFunction 

{     
  printf("%d", source.anObject); //the first version
  printf("%d", anObject); //second version  
}
Run Code Online (Sandbox Code Playgroud)

现在我进入第二个版本后,可以访问destination.h中的变量anObject,但它的值不是2,它是0.我希望它遵循我在source.h中声明的那个.

Joe*_*Joe 8

我假设.h文件中声明的静态变量在...之外@interface.所以类似于:

static NSString *myObjectTest = @"Test";

@interface MyObject : NSObject 
@end
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,那么您将无法使用以下内容访问它:

MyObject *obj = [[MyObject alloc] init];
[obj myObject]
Run Code Online (Sandbox Code Playgroud)

要么

obj.myObject
Run Code Online (Sandbox Code Playgroud)

这就是给你的"属性'xx'在'yy'类型的对象上找不到的东西".该静态变量不是MyObject对象的属性.

myObjectTest只要导入.h文件,就可以像这样访问该静态变量

更新 请参阅Chuck在下面的评论为什么这样做是个坏主意.

  • 将静态变量放在标题中几乎从来都不是您想要做的。它会给每个使用你的类的文件一个不同的变量副本。 (2认同)