gpt4 book ai didi

ios - singleton swift 的困难

转载 作者:搜寻专家 更新时间:2023-11-01 06:22:55 25 4
gpt4 key购买 nike

我正在尝试在我的 swift 中使用单例应用程序。
我有一个在 ObjectiveC 中使用的类(class)现在我在 swift 中使用它使用桥接头...

在单例类中这是我的代码...

SharedManger.h文件

 +(SharedManager *)sharedInstance;

@property (strong, nonatomic) NSMutableDictionary *dictobject;

SharedManger.m文件

 + (id)sharedInstance
{
static SharedManager *sharedMyManager = nil;
@synchronized(self)
{
if (sharedMyManager == nil)
{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

sharedMyManager = [self loadInstance];

});
}
}

return sharedMyManager;
}

+(instancetype)loadInstance
{
NSData* decodedData = [NSData dataWithContentsOfFile: [SharedManager filePath]];

if (decodedData)
{
SharedManager* sharedData = [NSKeyedUnarchiver unarchiveObjectWithData:decodedData];
return sharedData;
}

return [[SharedManager alloc] init];
}

viewcontroller.swift

 class var sharedInstance: viewcontroller {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: viewcontroller? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = viewcontroller()
}
return Static.instance!
}

func sharedManager()->SharedManager{
return SharedManager.sharedInstance()
}

问题:

  1. 那么这是快速的正确方法还是有更好的方法?

编辑:
Storyboard层次结构是 navbar -> loginVC -> VC1 ->VC2正如@Schemetrical 所说...我将他的方法用作singleton ....当我来自 loginVC 时它工作正常我可以从 singleton 访问数据....
但是登录一次后,我的 Root View Controller 发生了变化,来自 VC1那个时候它显示为空 singleton ....为什么会这样?

最佳答案

Swift 1.2 使得创建单例变得非常容易。静态实例只会被初始化一次,dictObject 将可供其他类检索。

class SharedManager {

static let sharedInstance = SharedManager()

var dictObject = // some default value

}

关于ios - singleton swift 的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30096539/

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