推荐的方法是什么,如果有的话,对单例进行子类化?例如,我想创建一个AVAudioSession的子类,它添加几个属性并使单例拥有自己的AVAudioSessionDelegate。
现在,我正在重写sharedInstance来分配我自己的类,然后调用我自己的类的init方法。我不确定其他单例方法是否需要像常规单例方法一样受到保护,因为超类已经是单例方法:
@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;
}发布于 2011-09-29 15:58:04
与其子类化单例,为什么不创建一个包含AVAudioSession对象的新类呢?这样,您就可以在初始化新类时创建它,还可以将属性添加到这个新类中,并将其自身作为委托提供。
相对于子类化,组合是Cocoa中首选的设计模式。
https://stackoverflow.com/questions/7594129
复制相似问题