正如您所知,我是Objective-C的新手。我目前有一个Singleton工作,但我试图在同一个.m文件中的几个方法中使用它。
现在我用它在方法中声明/实例化Singleton:
GlobalData *globDat=[GlobalData getInstance];
我是否需要在每个方法中声明它,或者是否有办法在.m(或.h?)文件的顶部执行此操作,以便我可以在其他方法中访问它?
...谢谢
(顺便说一句,我已经尝试将上面显示的代码行放在我的“@implementation”行下面,但是我得到一个错误:“初始化元素不是编译时常量”,我现在知道这是因为该行是不在方法中。)
答案 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];
}
祝你好运