在Objective-C,这很适合于一Singleton in Interface Builder使用辛格尔顿在Interface Builder与斯威夫特
static Universe *instance;
+ (Universe *)instance {
return instance;
}
+ (id)hiddenAlloc {
return [super alloc];
}
+ (id)alloc {
return [self instance];
}
+ (void)initialize {
static BOOL initialized = NO;
if (!initialized) {
initialized = YES;
instance = [[Universe hiddenAlloc] init];
}
}
并且由于ALLOC的覆盖,IB将拿起Universe
的唯一实例这可能在Swift中吗? [我已经坚持我的解决方案,这是here on Github。]
不,因为在Swift中没有'alloc'这样的东西。你正在进行基本的内存管理,Swift不会让你这样做。如果这对你很重要,为什么不在Objective-C中编写这部分代码呢? – matt
@matt谢谢你的同意。我试图想象一个混合体,其中singleton-ness在Objective-C中,然后'Universe'是一个Swift子类。在我看来,这是不可能的,因为'初始化'必须与特定类绑定,对吧? –
不,可以为子类调用'initialize'。这就是为什么一个好的'initialize'总是检查这个实际是什么类的原因。 – matt