你好我现在正在将用Objective C编写的项目翻译成swift,我正在遇到一个谜题。在目标C中,Object(SearchItem)是对象Item的子类,并且具有相同类的静态变量(SearchItem)。静态变量在静态函数中初始化。问题是在目标C上有一个非静态函数初始化超类变量,我试图复制这个,但我不是100%如何处理这个,我想保持相同的格式,如果可能的话,任何帮助都会太棒了!
对象C:
.h文件包括:
@interface SearchItem : Item
.m文件包括:
static SearchItem *sharedSearchItem = nil;
+(id)sharedSearchItem {
@synchronized(self) {
if(sharedSearchItem == nil){
sharedSearchItem = [SearchItem new];
//other methods
}
}
return sharedSearchItem;
}
-(void)configureWithSettingsConfig:(SettingsConfig *)settings{
NSLog(@"%@", [super initWithSettings:settings]);
//Other methods
}
夫特:
static var sharedSearchItem: SearchItem? = nil
static func sharedSearchItemInit(){
if(sharedSearchItem == nil){
sharedSearchItem = SearchItem()
//Other methods
}
}
func configureWithSettingsConfig(settings: SettingsConfig){
print(SearchItem.init(settings: settings)) // creates separate object need it to be on same instantiation
/*
The following calls won’t work
self = ServiceFacade.init(settings: settings)
self.init(settings: settings)
super.init(settings: settings)*/
//Other methods
}
答案 0 :(得分:2)
在Swift中,我们创建单身人士的方式就是这样:
static let sharedSearchItem = SearchItem()
就是这样。无需特殊的“sharedInit”功能。