gpt4 book ai didi

objective-c - 子类化单例

转载 作者:行者123 更新时间:2023-12-03 16:29:32 25 4
gpt4 key购买 nike

如果有的话,推荐的方法是什么来子类化单例?例如,我想创建一个 AVAudioSession 的子类,它添加几个属性并使单例成为自己的 AVAudioSessionDelegate

现在,我正在重写 sharedInstance 来分配我自己的类,然后调用我自己的类的 init 方法。我不确定其他单例方法是否需要像常规单例一样受到保护,因为父类(super class)已经是单例了:

@interface PdAudioSession : AVAudioSession <AVAudioSessionDelegate>

@implementation PdAudioSession

+ (PdAudioSession *)sharedInstance {
static PdAudioSession *myInstance = nil;
@synchronized (self) {
if (!myInstance) {
myInstance = [[PdAudioSession alloc] init];
}
}
return myInstance;
}

- (id)init {
self = [super init];
if (self) {
self.delegate = self;
}
return self;
}

最佳答案

与其子类化单例,为什么不直接创建一个包含 AVAudioSession 对象的新类。这样,您可以在初始化新类时创建它,您可以向这个新类添加属性,并将其自身提供为委托(delegate)。

在 Cocoa 中,组合是优于子类化的首选设计模式。

关于objective-c - 子类化单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7594129/

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