gpt4 book ai didi

objective-c - 将对象从静态变量 Objective C 初始化为 Swift

转载 作者:行者123 更新时间:2023-11-28 12:22:39 25 4
gpt4 key购买 nike

你好,我目前正在将一个用 Objective C 编写的项目翻译成 swift,我遇到了一个难题。在 Objective-C 中,对象 (SearchItem) 是对象 Item 的子类,并且具有同一类 (SearchItem) 的静态变量。静态变量在静态函数中初始化。问题是在 Objective-C 上有一个初始化父类(super class)变量的非静态函数,我试图复制这个但我不是 100% 如何处理这个,我想尽可能保持相同的格式,任何帮助都会很棒!

Objective-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
}

swift :

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

}

最佳答案

在 Swift 中,我们创建单例的方式很简单:

static let sharedSearchItem = SearchItem()

就是这样。不需要特殊的“sharedInit”函数。

关于objective-c - 将对象从静态变量 Objective C 初始化为 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337451/

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