我目前正在为我的应用编写辅助类。 helper类将返回全局可访问的变量。我创建了一个简单的帮助器,如下所示:
@interface MyHelper : NSObject
{
}
+(id) sharedHelper;
+(NSMutableArray *) employers;
+(id) sharedHelper
{
static MyHelper *sharedHelper = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
sharedHelper = [[self alloc] init];
});
return sharedHelper;
}
+(NSMutableArray *) employers
{
return _employers;
}
现在,我可以像这样访问雇主:
[MyHelper employers]
,我也可以像[[MyHelper sharedHelper] employers]
这样访问它。每种方法的好处是什么?或者它们都相同。 最佳答案
我想雇主数组是您的MyHelper类的一个属性。
如果不调用[MyHelper sharedHelper]而调用[MyHelper雇主],则会得到错误的结果(雇主数组的值是垃圾)。
也许这里的最佳实践是在+(NSMutableArray *)用人单位中使用延迟加载,并从+(id)sharedHelper中获取静态变量:
static MyHelper *sharedHelper = nil;
static dispatch_once_t onceToken;
+(id) sharedHelper
{
dispatch_once(&onceToken,^{
sharedHelper = [[self alloc] init];
});
return sharedHelper;
}
+(NSMutableArray *) employers
{
if(!sharedHelper)
[MyHelper sharedHelper];
return _employers;
}
关于ios - dispatch_once与静态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16018699/