gpt4 book ai didi

ios - 创建单例并覆盖 alloc 类方法

转载 作者:行者123 更新时间:2023-11-28 21:59:11 24 4
gpt4 key购买 nike

我使用这段代码创建了一个单例类:

static MyClass *sharedMyClass = nil;

+ (id)getInstance {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyClass = [[self alloc] init];
});
return sharedMyClass;
}

我担心的是我的类的用户可以调用 alloc 方法来创建该类的其他实例。因此这将不再是单例 我需要重写 alloc 方法吗?如果是这样,我建议以这种方式覆盖它:

+ (id)alloc
{
id instance = sharedMyClass;
if (instance == nil) {
instance = [super alloc];
}
return instance;
}

最佳答案

这样实现?

+(id)alloc
{ @synchronized([MyClass class])
{
NSAssert(_sharedMyClass == nil, @"Attempted to allocate a second instance of a singleton.");
_sharedMyClass = [super alloc];
return _sharedMyClass;
}
return nil;
}

关于ios - 创建单例并覆盖 alloc 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com