在整个.m文件中使变量可以访问的正确方法?

时间:2012-01-19 20:31:04

标签: iphone objective-c xcode

正如您所知,我是Objective-C的新手。我目前有一个Singleton工作,但我试图在同一个.m文件中的几个方法中使用它。

现在我用它在方法中声明/实例化Singleton:

GlobalData *globDat=[GlobalData getInstance];

我是否需要在每个方法中声明它,或者是否有办法在.m(或.h?)文件的顶部执行此操作,以便我可以在其他方法中访问它?

...谢谢

(顺便说一句,我已经尝试将上面显示的代码行放在我的“@implementation”行下面,但是我得到一个错误:“初始化元素不是编译时常量”,我现在知道这是因为该行是不在方法中。)

2 个答案:

答案 0 :(得分:1)

您可以添加类扩展,并将全局数据存储在ivar中,如下所示:

@interface MyClass() {
    GlobalData *globDat;
}
@end

@implementation MyClass

-(id) init {
    self = [super init];
    if (self) {
        globDat=[GlobalData getInstance];
    }
    return self;
}

@end

这将隐藏界面中的globDat,并使您在MyClass的实施块中实施的所有方法中都可用。

答案 1 :(得分:0)

当你需要一个可以被实现数据中的所有方法访问的变量/对象时,你需要在头文件上声明它,然后在实现文件上合成它(注意你可能需要导入GlobalData头)

所以

标题(.h)中的

@class GlobalData;

@properties (nonatomic, strong) GlobalData *globDat;

然后在实现文件(.m)

#import "blablabla.h"
#import "GlobalData.h"

@implementation blablabla

@synthesize globDat;

-(void)viewDidLoad
{
globDat = [GlobalData getInstance];
}
祝你好运