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中声明的那个.
我假设.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在下面的评论为什么这样做是个坏主意.