首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对单例进行子类化

对单例进行子类化
EN

Stack Overflow用户
提问于 2011-09-29 15:53:24
回答 1查看 1.3K关注 0票数 2

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

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

代码语言:javascript
复制
@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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-29 15:58:04

与其子类化单例,为什么不创建一个包含AVAudioSession对象的新类呢?这样,您就可以在初始化新类时创建它,还可以将属性添加到这个新类中,并将其自身作为委托提供。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7594129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档